主键值规则(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 列,分别是 deptno、dname 和 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 列,分别是 deptno、dname 和 loc。在 deptno 列上定义了主键约束,则此列不能有重复数据,且不能为空。
图中还展示了两行因为违反主键约束而无法插入 dept 表的数据,一行数据的主键值与已有数据重复,另一行数据的主键列为空值。




