gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 21:35:26 25 4
gpt4 key购买 nike

我在处理这张表时遇到了问题

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 中不起作用?

最佳答案

MySQL 不支持

CHECK 约束。您可以定义它们,但它们什么都不做(从 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/54111535/

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