云数据库 GaussDB-ALTER TABLE:修改约束示例

时间:2025-01-26 10:48:21

修改约束示例

  • 为列添加非空约束
    --建表。gaussdb=# CREATE TABLE test_alt3(pid INT, areaid CHAR(5), name VARCHAR(20));--为pid添加非空约束。gaussdb=# ALTER TABLE test_alt3 MODIFY pid NOT NULL;--查看。gaussdb=# \d test_alt3          Table "public.test_alt3" Column |         Type          | Modifiers --------+-----------------------+----------- pid    | integer               | not null areaid | character(5)          |  name   | character varying(20) |--取消列的非空约束。gaussdb=# ALTER TABLE test_alt3 MODIFY pid NULL;--在线为pid添加非空约束。gaussdb=# ALTER TABLE ONLINE test_alt3 MODIFY pid NOT NULL;--查看。gaussdb=# \d test_alt3          Table "public.test_alt3" Column |         Type          | Modifiers --------+-----------------------+----------- pid    | integer               | not null areaid | character(5)          |  name   | character varying(20) |
  • 取消列的非空约束
    gaussdb=# ALTER TABLE test_alt3 MODIFY pid NULL;--查看。gaussdb=# \d test_alt3          Table "public.test_alt3" Column |         Type          | Modifiers --------+-----------------------+----------- pid    | integer               |  areaid | character(5)          |  name   | character varying(20) | 
  • 修改字段默认值
    --修改test_alt3表中id的默认值。gaussdb=# ALTER TABLE test_alt3 ALTER COLUMN areaid SET DEFAULT '00000';--查看。gaussdb=# \d test_alt3                 Table "public.test_alt3" Column |         Type          |        Modifiers        --------+-----------------------+------------------------- pid    | integer               |  areaid | character(5)          | default '00000'::bpchar name   | character varying(20) |
    --删除id的默认值。gaussdb=# ALTER TABLE test_alt3 ALTER COLUMN areaid DROP DEFAULT;--查看。gaussdb=# \d test_alt3          Table "public.test_alt3" Column |         Type          | Modifiers --------+-----------------------+----------- pid    | integer               |  areaid | character(5)          |  name   | character varying(20) |
  • 添加表级约束
    • 直接添加约束。
      --给表添加主键约束。gaussdb=# ALTER TABLE test_alt3 ADD CONSTRAINT pk_test3_pid PRIMARY KEY (pid);--查看。gaussdb=# \d test_alt3          Table "public.test_alt3" Column |         Type          | Modifiers --------+-----------------------+----------- pid    | integer               | not null areaid | character(5)          |  name   | character varying(20) | Indexes:    "pk_test3_pid" PRIMARY KEY, ubtree (pid) WITH (storage_type=USTORE) TABLESPACE pg_default--删除表gaussdb=# DROP TABLE IF EXISTS test_alt3;--建表。gaussdb=# CREATE TABLE test_alt3(pid INT, areaid CHAR(5), name VARCHAR(20));--在线给表添加主键约束。gaussdb=# ALTER TABLE ONLINE test_alt3 ADD CONSTRAINT pk_test3_pid PRIMARY KEY (pid);--查看。gaussdb=# \d test_alt3          Table "public.test_alt3" Column |         Type          | Modifiers --------+-----------------------+----------- pid    | integer               | not null areaid | character(5)          |  name   | character varying(20) | Indexes:    "pk_test3_pid" PRIMARY KEY, ubtree (pid) WITH (storage_type=USTORE) TABLESPACE pg_default
    • 先创建索引然后再添加约束。
      --建表。gaussdb=# CREATE TABLE test_alt4(c1 INT, c2 INT);--建索引。gaussdb=# CREATE UNIQUE INDEX pk_test4_c1 ON test_alt4(c1);--添加约束时关联已经创建的索引。gaussdb=# ALTER TABLE test_alt4 ADD CONSTRAINT pk_test4_c1 PRIMARY KEY USING INDEX pk_test4_c1;--查看。gaussdb=# \d test_alt4   Table "public.test_alt4" Column |  Type   | Modifiers --------+---------+----------- c1     | integer | not null c2     | integer | Indexes:    "pk_test4_c1" PRIMARY KEY, ubtree (c1) WITH (storage_type=USTORE) TABLESPACE pg_default--删除。gaussdb=# DROP TABLE test_alt4;
  • 删除表级约束
    --删除约束。gaussdb=# ALTER TABLE test_alt3 DROP CONSTRAINT IF EXISTS pk_test3_pid;--查看。gaussdb=# \d test_alt3          Table "public.test_alt3" Column |         Type          | Modifiers --------+-----------------------+----------- pid    | integer               | not null areaid | character(5)          |  name   | character varying(20) | --删除。gaussdb=# DROP TABLE test_alt3;--删除主键约束(该语法仅在MYSQL兼容模式下支持)。gaussdb=# CREATE TABLE test_drop_primary_key(c1 INT PRIMARY KEY);gaussdb=# \d test_drop_primary_keyTable "public.test_drop_primary_key" Column |  Type   | Modifiers --------+---------+----------- c1     | integer | not nullIndexes:    "test_drop_primary_key_pkey" PRIMARY KEY, ubtree (c1) WITH (storage_type=USTORE) TABLESPACE pg_defaultgaussdb=# ALTER TABLE test_drop_primary_key DROP PRIMARY KEY;gaussdb=# \d test_drop_primary_keyTable "public.test_drop_primary_key" Column |  Type   | Modifiers --------+---------+----------- c1     | integer | not null
  • 重命名约束。
    --创建表tbl_test1,指定主键约束。gaussdb=# CREATE TABLE tbl_test1(    id int,    name varchar(50),    CONSTRAINT aaa PRIMARY KEY (id));--重命名约束。gaussdb=# ALTER TABLE tbl_test1 RENAME CONSTRAINT aaa TO pk_test1_id;--查看信息。gaussdb=# \d tbl_test1;          Table "public.tbl_test1" Column |         Type          | Modifiers --------+-----------------------+----------- id     | integer               | not null name   | character varying(50) | Indexes:    "pk_test1_id" PRIMARY KEY, ubtree (id) WITH (storage_type=USTORE) TABLESPACE pg_default--删除表。gaussdb=# DROP TABLE tbl_test1;
support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-0509.html