我正在创建一个表,因为我现在通过now()函数获取输入时间。每个数据的有效期为2个两个小时。所以我需要在结束时间列中自动添加时间
CREATE TABLE `mdiner_test`.`table_assign_mgr` (
`resid` INT NOT NULL AUTO_INCREMENT,
`custname` VARCHAR(45) NOT NULL DEFAULT 'Guest',
`custemail` VARCHAR(45) NOT NULL DEFAULT '[email protected]',
`custmobile` VARCHAR(45) NOT NULL DEFAULT '98989898',
`isactive` TINYINT NOT NULL DEFAULT 1,
`starttime` DATETIME NOT NULL DEFAULT now(),
`endtime` DATETIME NOT NULL DEFAULT DATE_ADD(now(), INTERVAL 2 HOUR),
PRIMARY KEY (`resid`));
最佳答案
看来这是不必要的列,但是您可能可以使用生成的列(取决于您的mysql版本)https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html,但是您将失去提供结束时间的功能。
drop table if exists t;
CREATE TABLE t (
`resid` INT NOT NULL AUTO_INCREMENT,
`custname` VARCHAR(45) NOT NULL DEFAULT 'Guest',
`custemail` VARCHAR(45) NOT NULL DEFAULT '[email protected]',
`custmobile` VARCHAR(45) NOT NULL DEFAULT '98989898',
`isactive` TINYINT NOT NULL DEFAULT 1,
`starttime` DATETIME NOT NULL DEFAULT now(),
`endtime` DATETIME as (DATE_ADD(starttime, INTERVAL 2 HOUR)),
PRIMARY KEY (`resid`));
insert into t(resid) values (1);
select * from t;
+-------+----------+-------------+------------+----------+---------------------+---------------------+
| resid | custname | custemail | custmobile | isactive | starttime | endtime |
+-------+----------+-------------+------------+----------+---------------------+---------------------+
| 1 | Guest | [email protected] | 98989898 | 1 | 2019-07-16 08:27:58 | 2019-07-16 10:27:58 |
+-------+----------+-------------+------------+----------+---------------------+---------------------+
1 row in set (0.00 sec)
如果无法使用生成的列,则可以使用触发器。