Mysql 如何在新表中存储创建日期?
我正在构建一个数据库,在一个名为employees的表中存储有关员工的信息,并希望在另一个名为log info的表中存储日志信息。 日志信息应包含创建者的姓名、创建和修改日期 我应该使用什么值以及如何使创建日期不可更改Mysql 如何在新表中存储创建日期?,mysql,sql,database,phpmyadmin,Mysql,Sql,Database,Phpmyadmin,我正在构建一个数据库,在一个名为employees的表中存储有关员工的信息,并希望在另一个名为log info的表中存储日志信息。 日志信息应包含创建者的姓名、创建和修改日期 我应该使用什么值以及如何使创建日期不可更改 因为我不想将其存储在employees表中,所以在employees表上创建条目时,是否有一种方法可以自动更改另一个表上的日期和时间。 这只能通过代码来完成,或者我只能用SQL语句来完成 这是数据库规范。我应该如何分割数据 主要数据: 名字 生日 身份证 他是一名雇员 联系信息
因为我不想将其存储在employees表中,所以在employees表上创建条目时,是否有一种方法可以自动更改另一个表上的日期和时间。 这只能通过代码来完成,或者我只能用SQL语句来完成 这是数据库规范。我应该如何分割数据 主要数据:
- 名字
- 生日
- 身份证
- 他是一名雇员
- 联系信息(电子邮件、电话、地址)
- 导言
- 工作经验
- 教育信息
- 谁以及何时创建了条目
- 上次修改数据的人和时间
时间戳
或日期时间
,并对其进行初始化。以下是一个例子:
CREATE TABLE t1 (
dt DATETIME DEFAULT CURRENT_TIMESTAMP CURRENT_TIMESTAMP
);
MySQL文档对如何做到这一点有很长的解释
编辑:
我认为应该将创建日期存储在存储数据的同一个表中。这似乎是合乎逻辑的,我基本上就是这样设计我所有的表的
如果确实要将其放入另一个表中,那么每次在第一个表中插入一行时,可以使用
insert
触发器在另一个表中插入一行。值得注意的是,我从未使用过这种方法。我总是将这些创建日期与数据一起放在表中。您将一列声明为时间戳
或日期时间
,并对其进行初始化。以下是一个例子:
CREATE TABLE t1 (
dt DATETIME DEFAULT CURRENT_TIMESTAMP CURRENT_TIMESTAMP
);
MySQL文档对如何做到这一点有很长的解释
编辑:
我认为应该将创建日期存储在存储数据的同一个表中。这似乎是合乎逻辑的,我基本上就是这样设计我所有的表的
如果确实要将其放入另一个表中,那么每次在第一个表中插入一行时,可以使用
insert
触发器在另一个表中插入一行。值得注意的是,我从未使用过这种方法。我总是将这些创建日期与数据一起放在表中。您将一列声明为时间戳
或日期时间
,并对其进行初始化。以下是一个例子:
CREATE TABLE t1 (
dt DATETIME DEFAULT CURRENT_TIMESTAMP CURRENT_TIMESTAMP
);
MySQL文档对如何做到这一点有很长的解释
编辑:
我认为应该将创建日期存储在存储数据的同一个表中。这似乎是合乎逻辑的,我基本上就是这样设计我所有的表的
如果确实要将其放入另一个表中,那么每次在第一个表中插入一行时,可以使用
insert
触发器在另一个表中插入一行。值得注意的是,我从未使用过这种方法。我总是将这些创建日期与数据一起放在表中。您将一列声明为时间戳
或日期时间
,并对其进行初始化。以下是一个例子:
CREATE TABLE t1 (
dt DATETIME DEFAULT CURRENT_TIMESTAMP CURRENT_TIMESTAMP
);
MySQL文档对如何做到这一点有很长的解释
编辑:
我认为应该将创建日期存储在存储数据的同一个表中。这似乎是合乎逻辑的,我基本上就是这样设计我所有的表的
如果确实要将其放入另一个表中,那么每次在第一个表中插入一行时,可以使用insert
触发器在另一个表中插入一行。值得注意的是,我从未使用过这种方法。我总是将这些创建日期与数据一起放在表中。您可以使用例如创建日志记录表,如下所示:
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表有一个employees_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;
|
这将允许您为日志记录使用不同的表,您还可以将更多数据插入日志信息表,如插入的员工的密钥、插入记录的人员等。。。只需检查文档中的所有语法。您可以使用以下方法创建日志记录表:
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表有一个employees_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;
|
这将允许您为日志记录使用不同的表,您还可以将更多数据插入日志信息表,如插入的员工的密钥、插入记录的人员等。。。只需检查文档中的所有语法。您可以使用以下方法创建日志记录表:
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表有一个employees_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;
|
这将允许您为日志记录使用不同的表,您还可以将更多数据插入日志信息表,如插入的员工的密钥、插入记录的人员等。。。只需检查文档中的所有语法。您可以使用以下方法创建日志记录表:
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表有一个employees_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;
|
这将允许您为日志记录使用不同的表,您还可以将更多数据插入日志信息表,如插入的员工的密钥、插入记录的人员等。。。只需检查文档中的所有语法。
这只能通过代码来完成,或者我只能使用SQL语句来完成?
如果您可以访问这两种语句,那么您可以通过两种方式来完成。这是一个关于最终如何使用SQL的相当普遍的问题。答案可以在文档中找到