我已经为我在Oracle SQL中创建的多个表的每个约束定义了一个名称.
问题是,要删除特定表的列的约束,我需要知道 for each 约束提供的名称,我已经忘记了.
如何列出我为表的每一列指定的所有约束的名称?
是否有任何SQL语句用于执行此操作?
我已经为我在Oracle SQL中创建的多个表的每个约束定义了一个名称.
问题是,要删除特定表的列的约束,我需要知道 for each 约束提供的名称,我已经忘记了.
如何列出我为表的每一列指定的所有约束的名称?
是否有任何SQL语句用于执行此操作?
您需要查询data dictionary,特别是USER_CONS_COLUMNS
视图,以查看表列和相应的约束:
SELECT *
FROM user_cons_columns
WHERE table_name = '<your table name>';
仅供参考,除非您专门使用小写名称(使用双引号)创建表,否则表名将默认为大写,因此请确保在查询中是大写的.
如果您希望查看有关约束本身的更多信息,请查询USER_CONSTRAINTS
视图:
SELECT *
FROM user_constraints
WHERE table_name = '<your table name>'
AND constraint_name = '<your constraint name>';
如果表所在的架构不是默认架构,则可能需要将视图替换为:
all_cons_columns
和
all_constraints
在where条款中添加:
AND owner = '<schema owner of the table>'