如果列year
不是2014或2015
我需要从数据库端执行此操作作为临时mesearure,直到我可以访问应用程序代码
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;
答案 0 :(得分:3)
添加check
约束
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一起使用。
根据{{3}}
CHECK子句被解析但被所有存储引擎忽略
您可以创建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;
您可以参考以下主题获取更多信息