Skip to content

主键约束

主键为表记录的唯一标识约束,在整个表中,不允许主键字段的记录出现重复,主键字段默认非空;一个表中仅能创建一个主键。

语法格式

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 章节。