第二章 SQL命令 ALTER TABLE(二)
删除列限制
DROP COLUMN可以删除指定为逗号分隔列表的多个列定义。每个列出的列名后面必须紧跟其RESTORY或CASCADE(如果未指定,则默认为RESTRICE)和%DELDATA或%NODELDATE(如果未指定,则默认为%NODELDATA)选项。
默认情况下,删除列定义不会从数据映射中删除存储在该列中的任何数据。
要同时删除列定义和数据,请指定%DELDATA选项。
删除列定义并不删除相应的列级特权。 例如,授予用户在该列上插入、更新或删除数据的权限。 这将产生以下后果:
- 如果删除了一个列,然后添加了另一个同名的列,那么用户和角色将在新列上拥有与旧列相同的特权。
- 删除列后,不可能撤销该列的对象特权。
由于这些原因,通常建议在删除列定义之前使用REVOKE命令从列中撤销列级特权。
RESTRICT关键字(或无关键字):如果列出现在索引中,或者定义在外键约束或其他唯一约束中,则不能删除该列。
为该列尝试DROP COLUMN失败,并出现SQLCODE -322错误。
默认为RESTRICT。
CASCADE关键字:如果该列出现在索引中,该索引将被删除。
可能有多个索引。
如果列出现在外键中,则将删除外键。
可能有多个外键。
如果列在COMPUTECODE或COMPUTEONCHANGE子句中使用,则不能删除该列。

.png)