是否有任何方法可以列出或证明MySQL中的检查约束(例如主键和外键可以使用此约束?

问题描述 投票:0回答:1

如果我想查看任何特定表的约束,我已经使用过

describe table_name;

show create table table_name;

这将显示我需要的有关主键和外键的所有内容,但不会显示Check约束。我还看过从以下位置获取信息:

select * from information_schema.constraints where constraint_schema = database_name;

但是同样,没有我的检查约束的证据。

我已经对我的检查约束进行了测试,以确保通过有意违反我设置的参数来确保它们起作用,并且发现它们确实能够成功发出警告并按预期工作,因此我对它们的使用充满信心。据我了解,Check约束只有在MySQL的较新版本中才得到适当支持,并且在解析但忽略之前就得到了支持。任何有关如何证明主键或外键约束的帮助都将是惊人的。

[此外,对于问题的格式不正确,我深表歉意,这是我关于StackOverflow的第一个问题,我非常感谢它是一种宝贵的资源。如果有任何关于您认为格式不正确的反馈,我欢迎您,我尝试坚持建议。

mysql database constraints check-constraints
1个回答
1
投票

您可以使用元数据表(MySQL 8.0.16):

SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'CHECK';

或:

SELECT *
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS;

db<>fiddle demo


编辑:

在您的演示中,我看到在表创建过程中添加了约束,而我的约束已添加到现有表中。这有结果吗?

不是全部:

CREATE TABLE t(id INT);
ALTER TABLE t ADD CONSTRAINT t_chk_1 CHECK (id > 2);

db<>fiddle demo2

© www.soinside.com 2019 - 2024. All rights reserved.