gpt4 book ai didi

mysql - 在 mySQL 中将时间戳列的默认值设置为 2 个时间戳的总和?

转载 作者:行者123 更新时间:2023-11-29 02:17:47 25 4
gpt4 key购买 nike

我在 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 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);

希望这对您有所帮助。

P.S:触发器会减慢您的插入操作(或它们之前/之后应用的任何操作)。我建议您使用 php/python 或您正在使用的任何后端以编程方式设置这些值。

相关:

Can I use a function for a default value in MySql?

关于mysql - 在 mySQL 中将时间戳列的默认值设置为 2 个时间戳的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36808191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com