我正在构建一个数据库,该数据库在一个名为employees的表中存储有关员工的信息,并且我希望将日志信息存储在另一个名为log info的表中。 日志信息应包含创建者的名称,创建和修改日期。
我应该使用什么值,如何才能使创建日期不变?
因为我不想将它存储在employees表中,所以有一种方法可以在员工表上创建一个条目来自动更改另一个表上的日期和时间。 这只能通过代码完成,或者我只能用SQL语句来完成吗?
这是数据库规范。我该如何分割数据?
主要数据:
以下英语,西班牙语和法语信息:
记录信息:
答案 0 :(得分:2)
您将列声明为timestamp
或datetime
并初始化它。这是一个例子:
CREATE TABLE t1 (
dt DATETIME DEFAULT CURRENT_TIMESTAMP CURRENT_TIMESTAMP
);
MySQL文档对如何执行此操作有很长的解释here。
编辑:
我认为你应该将创建日期存储在存储数据的同一个表中。这似乎是合乎逻辑的,这就是我基本上设计所有表格的方式。
如果你真的想把它放在另一个表中,那么每次在第一个表中插入一行时,你都可以使用insert
触发器在另一个表中插入一行。作为一个说明,我从未使用过这种方法。我总是将这些创建日期与数据一起放在表格中。
答案 1 :(得分:1)
您可以使用mysql triggers创建日志记录表,如下所示:
CREATE TABLE `log_info` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`entry_time` TIMESTAMP NOT NULL,
`emp_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
假设您的employees表具有employee_name列和id主键,您可以在其上创建一个触发器,该触发器在插入名称后自动执行:
delimiter |
CREATE TRIGGER loginsert AFTER INSERT ON employee_name
FOR EACH ROW
BEGIN
INSERT INTO log_info SET emp_id=NEW.id, entry_time= NOW();
END;
|
这将允许您使用不同的表来记录日志,您还可以在log_info表中插入更多数据,例如插入的员工的密钥,插入记录等...只需检查所有文档的文档语法。