现在要说的是在列这一层次过滤的基于表定义之前就规范好的 CHECK 约束。(MySQL 版本 >= 8016)
mysql> create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0));
Query OK, 0 rows affected (003 sec)
mysql> create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not enforced);
Query OK, 0 rows affected (002 sec)
这里 CHECK 约束的相关限制如下:
1 constraint 名字在每个数据库中唯一。
也就是说单个数据库里不存在相同的两个 constraint,如果不定义,系统自动生成一个唯一的约束名字。
2 check 约束针对语句 insert/update/replace/load data/load xml 生效;针对对应的 ignore 语句失效。
3 并非每个函数都可以使用,比如函数结果不确定的:NOW(),CONNECTION_ID(),CURRENT_USER()。
4 不适用于存储过程和存储函数。
5 系统变量不适用。
6 子查询不适用。
7 外键动作(比如 ON UPDATE, ON DELETE) 不适用。
8 enforced 默认启用,如果单独加上 not enforced ,check 约束失效。
虚拟表格是一个对象, 必须具有一个打开的, 可以SQLite 数据库连接从一个SQL 语句, 该虚拟table 对象看上去像其它的表或视图但在幕后, 从失败的查询在虚拟表的虚拟表格调用回调方法的对象而不是读取和写入的数据库文件
使用虚拟表的机制允许应用程序发布来自SQL 语句可访问接口, 就像它们是表SQL语句可以在概念集群队列虚拟表它们都可以执行一个真实表, 但下列情况除外:
无法上创建触发器虚拟表中
不能在虚拟创建额外的索引的表(虚拟表可以有索引, 但必须构建到虚拟表的实现不能添加带索引的单独使用CREATE INDEX 语句)
一个无法运行ALTER TABLE ADD COLUMN 针对虚拟表格命令
SQL 约束(Constraints)
SQL 约束用于规定表中的数据规则。
如果存在违反约束的数据行为,行为会被约束终止。
约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句)。
本回答来自:SQL 约束(Constraints)_树懒学堂
SQL CREATE TABLE + CONSTRAINT 语法
以上就是关于怎么用sql命令语句写check约束全部的内容,包括:怎么用sql命令语句写check约束、SQLITE的FTS3虚拟表主键失效.如何在虚拟表建立唯一约束.、什么是SQL里面的约束条件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)