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

时间:2024-11-02 18:50:33

修改约束示例

  • 为列添加非空约束
    --建表。
    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;
    --查看。
    gaussdb=# \d test_alt3
              Table "public.test_alt3"
     Column |         Type          | Modifiers 
    --------+-----------------------+-----------
     pid    | integer               | 
     areaid | character(5)          | 
     name   | character varying(20) | 
  • 修改字段默认值
    --修改test_alt1表中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 | integer               | 
       name   | character varying(20) | 
      Indexes:
          "pk_test3_pid" PRIMARY KEY, btree (pid) 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, btree (c1) 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 | integer               | 
     name   | character varying(20) | 
    
    --删除。
    gaussdb=# DROP TABLE test_alt3;
support.huaweicloud.com/centralized-devg-v3-gaussdb/gaussdb-12-0487.html