暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

OceanBase系统架构唯一约束

2023-12-20
757

唯一键(UNIQUE key)约束是关于唯一列值(Unique Column Value)的规则,定义在某一列或某一列族上,其作用是确保将要被插入或更新的数据行的列或列族的值是唯一的,表的任意两行的某列或某个列集的值不重复。

本文通过以下具体示例来介绍唯一性约束的主要特性。

obclient> CREATE TABLE t1(c1 INT, c2 INT, CONSTRAINT t1_uk_c1_c2 UNIQUE(c1, c2));
Query OK, 0 rows affected

obclient> INSERT INTO t1 VALUES(1, 1);
Query OK, 1 row affected 

obclient> INSERT INTO t1 VALUES(1, 1);
ERROR 1062 (23000): Duplicate entry '1-1' for key 't1_uk_c1_c2'

obclient> INSERT INTO t1 VALUES(null, 1);
Query OK, 1 row affected

obclient> INSERT INTO t1 VALUES(null, 1);
Query OK, 1 row affected

obclient> INSERT INTO t1 VALUES(null, null);
Query OK, 1 row affected 

obclient> INSERT INTO t1 VALUES(null, null);
Query OK, 1 row affected

又如,在下图中,dept 表的 dname 列上定义了 UNIQUE 键约束,则不允许此表存在重复的部门名称,但是允许用户向 dname 列中插入空值。如果 dname 列上还定义了 NOT NULL 约束,则不允许用户向 dname 列中插入空值。

唯一约束

如果 UNIQUE 键由多列构成,那么这组数据列被称为复合唯一键(Composite Unique Key)。如下图所示,customer 表上定义的 UNIQUE 键约束使用了复合唯一键,包含 area 和 phone 两列,这要求了任意两行中键的值不能重复。用户可以向列中输入空值。但是,如果列上还定义了 NOT NULL 约束,则不允许输入空值。

用户可以向 customer 表插入任意条记录,但依据上述 UNIQUE 键约束的限制,表中各行的区码(Area Code)与电话号码(Telephone Number)的组合不能重复。这能避免因疏忽造成电话号码重复问题。

唯一约束2

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论