2011-04-05 71 views
6

此問題已在SO上回答過幾次:herehere和外部鏈接herehere如何跟蹤數據庫表中多列的更改以進行審計?

我瞭解上述線程中描述的方法,並計劃使用this方法。

但是我在實現它的時候很少有基本的疑惑。

在我的情況下,連續多列可以在同一時間進行更新,所以按照正確的方式來實現:

  1. 找出操作類型(INSERT/UPDATE/DELETE)
  2. 找出哪些是得到更新前更新
  3. 閱讀全行的列
  4. 插入在每列審計表中的行與新老值變化(連同其他細節)
  5. ü更新表格
+0

不支持mysql的觸發器嗎? – 2011-04-05 06:22:35

+0

@ p.marino:我想從應用程序而不是使用觸發器。我已閱讀上述鏈接之一中使用觸發器的優缺點。對我來說,在應用程序中執行它也更簡單。 – understack 2011-04-05 06:27:59

+1

使用觸發器更容易做到這一點! – 2011-04-05 06:30:31

回答

4

假設您使用的是mySQL的最新版本,我會親自使用triggers

假設他們的工作或多或少像我在其他產品(例如Oracle)中熟悉的那樣工作,您的問題就變得更簡單了,因爲您在該行上放置了「更新」觸發器並使用它來更新審計你可能需要注意:如果你的應用程序只是以一個用戶的身份登錄數據庫(例如,如果你使用連接池的一種常見方法),記錄實際的用戶身份可能會很棘手。

+0

在我的情況下,查找實際的用戶身份不是問題。 – understack 2011-04-05 06:33:12

+0

那麼我真的認爲觸發器是要走的路,除非mySQL有一些模糊的問題(不太熟悉它,我的不好)。 – 2011-04-05 07:14:36