如果我想查看任何特定表的约束,我已经使用过
describe table_name;
或
show create table table_name;
这将显示我需要的有关主键和外键的所有内容,但不会显示Check约束。我还看过从以下位置获取信息:
select * from information_schema.constraints
where constraint_schema = database_name;
但是同样,没有我的检查约束的证据。
我已经对我的检查约束进行了测试,以确保通过有意违反我设置的参数来确保它们起作用,并且发现它们确实能够成功发出警告并按预期工作,因此我对它们的使用充满信心。据我了解,Check约束只有在MySQL的较新版本中才得到适当支持,并且在解析但忽略之前就得到了支持。任何有关如何证明主键或外键约束的帮助都将是惊人的。
[此外,对于问题的格式不正确,我深表歉意,这是我关于StackOverflow的第一个问题,我非常感谢它是一种宝贵的资源。如果有任何关于您认为格式不正确的反馈,我欢迎您,我尝试坚持建议。
您可以使用元数据表(MySQL 8.0.16):
SELECT *
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE = 'CHECK';
或:
SELECT *
FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS;
在您的演示中,我看到在表创建过程中添加了约束,而我的约束已添加到现有表中。这有结果吗?
不是全部:
CREATE TABLE t(id INT);
ALTER TABLE t ADD CONSTRAINT t_chk_1 CHECK (id > 2);