DB2 V9.7 for Linux, UNIX, and Windows

删除约束

可以使用 ALTER TABLE 语句显式删除表检查约束,或作为 DROP TABLE 语句的结果将其隐式删除。

关于此任务

要删除约束,使用带有 DROP 或 DROP CONSTRAINT 子句的 ALTER TABLE 语句。这将允许您“绑定”并继续访问包含受影响列的表。一个表上的所有唯一约束的名称可以在 SYSCAT.INDEXES 系统目录视图中找到。
删除唯一约束
可以使用 ALTER TABLE 语句来显式删除唯一约束。
ALTER TABLE 语句的 DROP UNIQUE 子句删除唯一约束 constraint-name 以及依赖于此唯一约束的所有引用约束的定义。constraint-name 必须标识现有唯一约束。
    ALTER TABLE <table-name> 
      DROP UNIQUE <constraint-name>
删除此唯一约束使使用该约束的任何程序包或高速缓存的动态 SQL 无效。
删除主键约束
使用 ALTER TABLE 语句的 DROP PRIMARY KEY 子句删除主键约束。
ALTER TABLE 语句的 DROP PRIMARY KEY 子句删除主键以及依赖于此主键的所有引用约束的定义。表必须具有主键。要使用命令行来删除主键,请输入:
    ALTER TABLE <table-name>       
           DROP PRIMARY KEY
删除(表)检查约束
删除检查约束时,与该表有 INSERT 或 UPDATE 关系的所有程序包和高速缓存的动态语句将变得无效。一个表上的所有检查约束的名称可以在 SYSCAT.INDEXES 目录视图中找到。在尝试删除带有系统生成的名称的表检查约束之前,在 SYSCAT.CHECKS 目录视图中查找该名称。
以下语句将删除检查约束 constraint-name。constraint-name 必须标识在表上定义的现有检查约束。要使用命令行来删除表检查约束:
       ALTER TABLE <table_name>
      DROP CHECK <check_constraint_name>
或者,可以使用带有 DROP CONSTRAINT 选项的 ALTER TABLE 语句。
删除外键(引用)约束
使用 ALTER TABLE 语句的 DROP CONSTRAINT 子句来删除外键约束。
ALTER TABLE 语句的 DROP CONSTRAINT 子句删除约束 constraint-nameconstraint-name 必须标识对表定义的现有外键约束、主键或唯一约束。要使用命令行来删除外键,请输入:
    ALTER TABLE <table-name>       
      DROP FOREIGN KEY <foreign_key_name> 
下列示例在 ALTER TABLE 语句中使用 DROP PRIMARY KEY 和 DROP FOREIGN KEY 子句来删除表上的主键和外键:
       ALTER TABLE EMP_ACT
           DROP PRIMARY KEY
           DROP FOREIGN KEY ACT_EMP_REF
           DROP FOREIGN KEY ACT_PROJ_REF
       ALTER TABLE PROJECT
           DROP PRIMARY KEY
当删除外键约束时,包含下列语句的程序包或高速缓存的动态语句可能被标记为无效:
  • 插入或更新包含外键的表的语句
  • 更新或删除父表的语句。