如何解决在 MySQL 中使用 CHECK 和 LIKE?
我是 mysql 的新手,我的问题是这是正确的吗?
CREATE TABLE ... (
/* some definition ommitted. */
About varchar(300) NOT NULL DEFAULT '...',CHECK(About LIKE 'ABOUT: %,DATE: %')
);
通过搜索,所有结果都在 LIKE
中显示 SELECT
,那么在 CHECK
中使用在语法上是否正确?
解决方法
是的,语法上没问题。
但有两点:
-
请注意,在 8.0.16 版本以下,MySQL 确实接受表 DDL 中的检查约束,但不强制执行检查约束。所以就好像他们根本不在那里一样。
您应该检查这是否适用于您的版本。
-
更重要的是,您似乎犯了一个大错误,违反了第一范式。
这里似乎有两个属性,某种文字描述和某个时间点。那应该是两个不同的列。
不要将它们的值放在一个大的文本列中!
否则我保证你以后会很头疼:
- 每次您想查询这两个属性之一时,您首先需要解析整个文本。
- 您无法创建任何有助于提高性能的有用索引。
- 更新一个属性意味着在正确的位置更改整个文本,而不仅仅是属性本身。
- 等等等等...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。