可以使用 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-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
当删除外键约束时,包含下列语句的程序包或高速缓存的动态语句可能被标记为无效:
- 插入或更新包含外键的表的语句
- 更新或删除父表的语句。