我有一个可供多个用户访问的数据库。有什么方法可以设置表格,以便每当有人输入新记录或修改记录时,他/她的用户名和输入的日期将存储在与记录本身相同的表中的 2 列中。该表如下所示:
Id | Name | Username | Date Entered | Date Modified
1 | Cat | john | 1999-05-05 | 1996-06-06
我使用的是 phpMyAdmin 的 GUI。
谢谢!
我有一个可供多个用户访问的数据库。有什么方法可以设置表格,以便每当有人输入新记录或修改记录时,他/她的用户名和输入的日期将存储在与记录本身相同的表中的 2 列中。该表如下所示:
Id | Name | Username | Date Entered | Date Modified
1 | Cat | john | 1999-05-05 | 1996-06-06
我使用的是 phpMyAdmin 的 GUI。
谢谢!
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
首先,您可能需要花一些时间考虑设计审计机制的最佳方式,因为向数据库中的每个表添加两列可能不是最佳的。
话虽如此,你正在寻找做你所描述的事情是一个触发器。这是每次调用指定操作时都会执行的一段 SQL。您的案例的粗略示例:
在“table_name”插入(用户,时间)插入“table_name”后创建触发器审计
我不记得精确的 mysql 语法,但这是您需要的粗略示例。如果不清楚,请提出后续问题。