自动将用户和日期添加到记录

时间:2009-12-17 04:47:58

标签: mysql phpmyadmin

我有一个可供多个用户访问的数据库。我有什么方法可以设置表格,以便每当有人输入新记录或修改记录时,他/她的用户名和输入的日期将存储在与记录本身相同的表格中的2列中。该表如下所示:

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

我使用的是phpMyAdmin的GUI。

谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

首先,您可能需要花一些时间考虑设计审计机制的最佳方法,因为向数据库中的每个表添加两列可能不是最佳的。

话虽如此,你所要做的就是你所描述的是触发器。这是一个SQL,每次调用指定的操作时都会执行。一个粗略的例子:

创建触发器审核 插入“table_name”后 将(用户,时间)插入“table_name”

我不记得精确的mysql语法,但这是你需要的一个粗略的例子。如果不清楚,请询问后续问题。