可以使用 ALTER TABLE 语句显式删除表检查约束,或作为 DROP TABLE 语句的结果将其隐式删除。
关于本任务
要删除约束,使用带有 DROP 或 DROP CONSTRAINT 子句的 ALTER TABLE 语句。 这允许您 BIND 并继续访问包含受影响列的表。 一个表上的所有唯一约束的名称可以在 SYSCAT.INDEXES 系统目录视图中找到。
过程
- 要显式删除唯一约束,请使用 ALTER TABLE 语句的 DROP UNIQUE 子句。
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
- 要删除(表)检查约束,请使用 ALTER TABLE 语句的 DROP CHECK 子句。
删除检查约束时,与该表有 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-name。
constraint-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