2009-12-17 33 views
0

我有一個數據庫可以被多個用戶訪問。是否有任何方法可以設置表格,以便每當有人輸入新記錄或修改記錄時,他/她的用戶名和輸入的日期都會存儲在與記錄本身相同的表中的2列中。該表如下所示:自動添加用戶和日期到記錄

Id | Name | Username | Date Entered | Date Modified 
1 | Cat | john | 1999-05-05 | 1996-06-06 

我使用的是phpMyAdmin的GUI。

謝謝!

回答

1

當您在數據類型聲明之後使用NOT NULL創建表時,可以將列設置爲不允許空值。否則,您使用ALTER TABLE語句來更改列,如果它們已經存在,或者您將該列添加到現有表。

這會阻止某人添加記錄,但不會更新。如果您有一個要引用的單獨的用戶表,則可以使用外鍵關係來確保如果填充了用戶列,則將使用有效用戶完成。

如果未提供值,可以使用DEFAULT約束來設置日期字段的值。

所有的
ALTER TABLE x 
    ADD USER VARCHAR(45) NOT NULL 

ALTER TABLE x 
    ADD DATE_ENTERED DATE NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 

ALTER TABLE x 
    ADD DATE_ENTERED DATE NOT NULL DEFAULT ON UPDATE CURRENT_TIMESTAMP 
+0

是否可以這樣做,以便用戶可以更新和添加記錄? – Tim 2009-12-17 05:58:23

+0

@Tim:是的,用戶可以添加和更新記錄。如果未提供值/空值,則DEFAULT約束將應用該值。有關默認時間戳約束的更多信息:http://dev.mysql.com/doc/refman/5.0/en/timestamp.html – 2009-12-17 06:09:03

0

首先,你可能要花費一些時間來考慮設計一個審覈機制的最佳方式,因爲添加兩列到你的數據庫的每個表可能不是最優的。

話雖如此,你所要找的做你所描述的是一個觸發器。這是每次調用指定操作時都會執行的一段SQL。對於你的情況粗略的例子:

插入的「表格名」 插入(用戶,時間)到「表格名」

後創建觸發器的審計 我不記得確切的MySQL語法,但是這是一個粗略的你需要的例子。如果不清楚,請詢問後續問題。