我已經爲在Oracle SQL中創建的多個表的每個約束定義了一個名稱。顯示Oracle中表的所有約束的名稱SQL
問題是,要刪除特定表的列的約束,我需要知道我爲每個約束提供的名稱,這些名稱都是我忘記的。
如何列出我爲表的每列指定的所有約束名稱?
有沒有這樣做的SQL語句?
我已經爲在Oracle SQL中創建的多個表的每個約束定義了一個名稱。顯示Oracle中表的所有約束的名稱SQL
問題是,要刪除特定表的列的約束,我需要知道我爲每個約束提供的名稱,這些名稱都是我忘記的。
如何列出我爲表的每列指定的所有約束名稱?
有沒有這樣做的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>'
SELECT * FROM USER_CONSTRAINTS
這會不會讓你的列名 – 2013-10-02 08:43:58
select constraint_name,constraint_type
from user_constraints
where table_name = 'YOUR TABLE NAME';
注:表名稱應該是上限。
如果你不知道,則表的名稱,
select constraint_name,constraint_type,table_name
from user_constraints;
也許這可以幫助:
SELECT constraint_name, constraint_type, column_name
from user_constraints natural join user_cons_columns
where table_name = "my_table_name";
歡呼
錯字:'USER_CONS_COLUMNS' – 2013-09-25 03:54:56
<我的表名>區分大小寫,我想;它應該是大寫。 – 2013-12-20 06:26:07