我已经在mySQL中创建了一个表,如下所示:
CREATE TABLE IF NOT EXISTS `LibraryManager`.`Card` (
`card_id` INT NOT NULL AUTO_INCREMENT,
`card_registerDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`card_expiredDate` TIMESTAMP,
PRIMARY KEY (`card_id`))
ENGINE = InnoDB;
现在,我想将默认值设置card_expiredDate
为card_registerDate
+ 30或CURRENT_TIMESTAMP + 30(从注册日期起30天)。有什么办法吗?非常感谢您阅读本文。
不能使用create语句设置到期列的默认值,而是使用触发器。为此,您将不得不稍微修改您的create语句。只需更改到期列的数据类型,即您的新查询:
CREATE TABLE IF NOT EXISTS `LibraryManager`.`Card` (
`card_id` INT NOT NULL AUTO_INCREMENT,
`card_registerDate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`card_expiredDate` DATETIME,
PRIMARY KEY (`card_id`))
ENGINE = InnoDB;
然后触发以下触发器
CREATE TRIGGER before_insert_library_card
BEFORE INSERT ON `LibraryManager`.`Card`
FOR EACH ROW
SET new.card_expiredDate = adddate(CURRENT_TIMESTAMP,30);
希望这可以帮助。
PS:触发器会减慢插入操作(或在插入之前/之后执行的任何操作)的速度。我建议您使用php / python或您正在使用的任何后端以编程方式设置这些值。
有关的:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句