2010-04-09 83 views
1

我創建了一個PHP腳本,我缺乏提取的主鍵,我已經給下面的流程,請幫我如何修改讓主鍵提取主鍵從MySQL在PHP

我使用MySQL數據庫,爲Joomla工作,我的要求是跟蹤任何表上的插入/更新/刪除活動,並將其存儲在另一個使用觸發器的審計表中,即我在做審計。 DB的表結構:幾張桌子,不要有任何的PK,也沒有自動遞增鍵

我的腳本的流程是:

  1. 我從數據庫提取出所有表。
  2. 我檢查表是否有觸發器。
  3. 如果是,則移動到檢查下一個表格等。
  4. 如果一點兒也不發現任何觸發然後爲表創建觸發器,使得

    • 它首先檢查表中有任何主鍵或不(在跟蹤審計表用於插入每做一次更改)
    • 如果它有主鍵,那麼它會在創建觸發器時進一步使用它。
    • 如果它沒有找到任何PK那麼它在創造觸發進一步的情況下,不審計表中插入任何ID

現在在這裏,我的問題是我需要的PK每次這樣我可以記錄在其中執行插入/更新/刪除的任何特定表的id,以便我可以進一步使用此審計軌道表在生產數據庫中進行復制。現在,正如我之前提到的,我不適用於PK/auto - 在某些表格中增加,那麼我應該怎麼做才能獲得更改完成的特定ID?

請指導我... GEEKS !!!

+0

請給我一些反饋.... – 2010-04-09 07:14:07

+0

我需要更多的支持 – 2010-04-09 11:37:04

回答

1

如果我理解你的問題是正確的,那麼你需要一個表格行的唯一標識符,它沒有主鍵,也沒有其他種類的唯一標識符。據我所知,這並不容易。其他數據庫具有唯一的行ID,但mySQL不具備。你可能使用每一列的值來嘗試和識別該行,但這遠非重複安全 - 可能有兩個或更多行包含完全相同的值。所以我會說,沒有一個唯一的標識符,這是根本無法完成的。

在這太問題的一些想法:

MySQL: is there something like an internal record identifier for every record in a MySQL table?

+0

@Pekka感謝的方向,但我需要在運行應用的觸發器每一個管理員操作,以便在運行時創建關鍵字段聽起來非常tredious ..指導我如何實現我的目標? – 2010-04-09 11:40:19