gpt4 book ai didi

mysql - 如何在创建列上设置条件

转载 作者:行者123 更新时间:2023-11-29 05:18:21 26 4
gpt4 key购买 nike

如果 year 列不是 2014 或 2015,我希望插入语句失败

我需要从数据库端执行此操作作为临时措施,直到我可以访问应用程序代码

CREATE TABLE `movies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(345) DEFAULT NULL,
`year` int(11) DEFAULT NULL,
`imdbid` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4545 DEFAULT CHARSET=utf8;

最佳答案

添加一个检查约束

CREATE TABLE `movies` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(345) DEFAULT NULL,
`year` int(11) DEFAULT NULL,
`imdbid` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
CHECK `year` in (2014,2015)
) ENGINE=InnoDB AUTO_INCREMENT=4545 DEFAULT CHARSET=utf8;

ALTER TABLE `movies`
ADD constraint checkyear check (`year`in (2014,2015))

编辑

根据 jarlh 的更新,CHECK 约束不能很好地与 mysql 配合使用。根据 MySQL Reference Manual

The CHECK clause is parsed but ignored by all storage engines

您可以创建一个Trigger 来模拟一个CHECK 约束。像这样。

CREATE TRIGGER trg BEFORE INSERT ON movies
FOR EACH ROW BEGIN
IF (New.year NOT IN(2014,2015))
THEN
signal sqlstate '45000'
set message_text = 'check failed';
END IF;
END;

您可以引用以下主题以获取更多信息

CHECK constraint in MySQL is not working

Can a MySQL trigger simulate a CHECK constraint?

关于mysql - 如何在创建列上设置条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29515122/

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