我已经为我在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>'

Sql相关问答推荐

如何实现一个广泛的多级自连接PostgreSQL查询?

MariaDB查询在逗号分隔的字符串中查找多个值

通过之前的连接-这是Oracle的错误吗?

基于多参数的SQL Server条件过滤

如何设计一个调用嵌套函数并仅在所有被调用的嵌套函数都提交时才提交的事务,例如,如果一个子函数失败则中止?

在SQL GROUP BY中的某些行之后执行计算

PATINDEX中与[A-Z]匹配(U除外)的正则表达式

group-by-clause具有特定列,而不是oracle的toad中的all

在 Postgres 中将结果按几十年划分

使用 union 的有序结果获取行数

将空 JSON 数组添加到 SQL Server 表列中的 JSON 字符串

没有调用子查询的嵌套 JOIN语法是什么?

用户定义的标量值函数是否仍然会阻止并行性?

汇总具有连续日期范围的行

在自引用表中使用分组和计数的SQL查询语句

IN子句使用的表值用户定义函数参数

Clob 问题 - 将 clob 列拆分为多行

在多个表上递归查找

如何找到特定时间间隔内的最大和最小日期?

将单行中的多个行值转换为列