gpt4 book ai didi

mysql - 如何在 MySQL 表上添加自定义 CHECK 约束?

转载 作者:IT老高 更新时间:2023-10-28 23:42:37 28 4
gpt4 key购买 nike

这张 table 有问题

CREATE TABLE `Participants` (
`meetid` int(11) NOT NULL,
`pid` varchar(15) NOT NULL,
`status` char(1) DEFAULT NULL,
PRIMARY KEY (`meetid`,`pid`),
CONSTRAINT `participants_ibfk_1` FOREIGN KEY (`meetid`) REFERENCES `Meetings` (`meetid`) ON DELETE CASCADE
CONSTRAINT `participants_ibfk_2` CHECK (status IN ('a','d','u'))
CONSTRAINT `participants_ibfk_3` CHECK (pid IN (SELECT name FROM Rooms) OR pid IN (SELECT userid FROM People))
);

我想要一个外键约束,这很有效。然后,我还想为属性 status 添加一个约束,因此它只能采用值“a”、“d”和“u”。我无法将字段设置为 Enumset

谁能告诉我为什么这段代码在 MySQL 中不起作用?

最佳答案

CHECK 约束不受 MySQL 支持。你可以定义它们,但它们什么都不做(从 MySQL 5.7 开始)。

来自 manual :

The CHECK clause is parsed but ignored by all storage engines.

解决方法是创建 triggers ,但它们并不是最容易使用的东西。

如果您想要一个支持 CHECK 约束的开源 RDBMS,请尝试 PostgreSQL .它实际上是一个非常好的数据库。

关于mysql - 如何在 MySQL 表上添加自定义 CHECK 约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7522026/

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