云数据库 GAUSSDB-ALTER TABLE:修改约束示例
时间:2025-06-03 09:33:12
修改约束示例
- 为列添加非空约束。
--建表。 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_key Table "public.test_drop_primary_key" Column | Type | Modifiers --------+---------+----------- c1 | integer | not null Indexes: "test_drop_primary_key_pkey" PRIMARY KEY, ubtree (c1) WITH (storage_type=USTORE) TABLESPACE pg_default gaussdb=# ALTER TABLE test_drop_primary_key DROP PRIMARY KEY; gaussdb=# \d test_drop_primary_key Table "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