主键约束
主键为表记录的唯一标识约束,在整个表中,不允许主键字段的记录出现重复,主键字段默认非空;一个表中仅能创建一个主键。
语法格式
sql
primary_constriant_stmt::=
[CONSTRAINT name] PRIMARY KEY(column_1[,...n])
参数说明
[CONSTRAINT name]
:可选关键字,用于指定主键约束的名称。name
:约束的名称,用于唯一标识该约束。PRIMARY KEY
:关键字,用于定义主键约束。(column_1[,...n])
:括号内的列名列表,用于指定哪些列组合成主键。
示例
示例1
创建一个表 test,并在 id 和 tel 列上定义一个复合主键。复合主键确保 id 和 tel 列的组合值是唯一的。sql-- 创建表 CREATE TABLE test(id INTEGER ,name CHAR(10), tel INTEGER, CONSTRAINT test_pk PRIMARY KEY (id, tel)); -- 插入值 INSERT INTO test (id, name, tel) VALUES (1, 'He', 1234567890); -- 查询表信息 SELECT * FROM test; ID | NAME | TEL | ------------------------------------------------------------------------------ 1 | He| 1234567890 | -- 插入一条违反主键约束的记录,返回错误 INSERT INTO test (id, name, tel) VALUES (1, 'Zhang', 1234567890); Error: [E13001] 违反唯一值约束
示例2
若用户不指定约束名可采用以下语法进行表创建,系统默认为缺省的约束创建一个约束名称。sql-- 创建不带约束名的表 CREATE TABLE test2(id INTEGER, name CHAR(10), tel INTEGER, PRIMARY KEY(id, tel)); -- 查询约束定义为id,tel的约束名称 SELECT CONS_NAME FROM sys_constraints WHERE DEFINE = '"id","tel"'; CONS_NAME | ------------------------------------------------------------------------------ K_S24183173287646248|
说明:
查询约束信息详细说明请参见《系统字典参考》 > 模式对象 > 约束-sys_constraints 章节。