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

OceanBase系统架构主键约束

2023-12-21
909

主键值规则(Primary Key Value Rule)是定义在某一键 Key(键指一列或一个列集)上的规则,其作用是确保表内的每一数据行都可以由某一个键值唯一地确定。

每个数据库表上最多只能定义一个 PRIMARY KEY 约束。构成此约束的列(一列或多列)的值可以作为一行数据的唯一标识符,即每个数据行可以由此主键值命名。

说明

OceanBase 数据库只支持在建表时通过 CREATE TABLE 创建主键约束,暂不支持通过 ALTER TABLE 追加、删除、修改主键约束。

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

obclient> CREATE TABLE t1(c1 INT, c2 INT, CONSTRAINT pk_c1_c2 PRIMARY KEY(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 'PRIMARY'

obclient> INSERT INTO t1 VALUES(null, 1);
ERROR 1048 (23000): Column 'c1' cannot be null

obclient> INSERT INTO t1 VALUES(null, null);
ERROR 1048 (23000): Column 'c1' cannot be null

PRIMARY KEY 完整性约束(Integrity Constraint)能够确保表的数据遵从以下两个规则:

  • 任意两行数据的 PRIMARY KEY 约束列(一列或多列)不存在重复值。

  • 主键列的值不为空。即用户必须为主键列输入值。

数据库不强制用户为表定义主键,但使用主键可以使表内的每行数据可以被唯一确定,且不存在重复的数据行。

下图展示了定义在 dept 表上的 PRIMARY KEY 约束,以及违反此约束的数据行。dept 表内包含 3 列,分别是 deptnodname 和 loc。在 deptno 列上定义了主键约束,则此列不能有重复数据,且不能为空。

图中还展示了两行因为违反主键约束而无法插入 dept 表的数据,一行数据的主键值与已有数据重复,另一行数据的主键列为空值。

主键约束主键值规则(Primary Key Value Rule)是定义在某一键 Key(键指一列或一个列集)上的规则,其作用是确保表内的每一数据行都可以由某一个键值唯一地确定。

每个数据库表上最多只能定义一个 PRIMARY KEY 约束。构成此约束的列(一列或多列)的值可以作为一行数据的唯一标识符,即每个数据行可以由此主键值命名。

说明

OceanBase 数据库只支持在建表时通过 CREATE TABLE 创建主键约束,暂不支持通过 ALTER TABLE 追加、删除、修改主键约束。

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

obclient> CREATE TABLE t1(c1 INT, c2 INT, CONSTRAINT pk_c1_c2 PRIMARY KEY(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 'PRIMARY'

obclient> INSERT INTO t1 VALUES(null, 1);
ERROR 1048 (23000): Column 'c1' cannot be null

obclient> INSERT INTO t1 VALUES(null, null);
ERROR 1048 (23000): Column 'c1' cannot be null

PRIMARY KEY 完整性约束(Integrity Constraint)能够确保表的数据遵从以下两个规则:

  • 任意两行数据的 PRIMARY KEY 约束列(一列或多列)不存在重复值。

  • 主键列的值不为空。即用户必须为主键列输入值。

数据库不强制用户为表定义主键,但使用主键可以使表内的每行数据可以被唯一确定,且不存在重复的数据行。

下图展示了定义在 dept 表上的 PRIMARY KEY 约束,以及违反此约束的数据行。dept 表内包含 3 列,分别是 deptnodname 和 loc。在 deptno 列上定义了主键约束,则此列不能有重复数据,且不能为空。

图中还展示了两行因为违反主键约束而无法插入 dept 表的数据,一行数据的主键值与已有数据重复,另一行数据的主键列为空值。

主键约束

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

评论