最近公司數據庫里某條數據有問題,想要修改一下,但是總是提示已存在子記錄,搜索后發現是因為有外鍵約束造成的。就想學習一下如何使用sql查看外鍵關系:
網上查到的sql如下。
select a.owner, --主鍵擁有者 a.table_name, --主鍵表 b.column_name, --主鍵列 c.OWNER, --外鍵擁有者 c.table_name, --外鍵表 d.column_name --外鍵列 from user_constraints a left join user_cons_columns b on a.constraint_name=b.constraint_name left join user_constraints c on c.R_CONSTRAINT_NAME=a.constraint_name left join user_cons_columns d on c.constraint_name=d.constraint_name where a.table_name='xxx' --需要查看主外鍵關系的表 order by a.table_name
user_constraints是表約束的視圖,描述的是約束類型(constraint_type)是什么,屬於哪些表(table_name),如果約束的類型為R(外鍵)的話,那么r_constraint_name字段存放的就是被引用主表中的主鍵約束名。
user_cons_columns是表約束字段的視圖,說明表中的和約束相關的列參與了哪些約束。這些約束有主鍵約束,外鍵約束,索引約束.
以上內容均摘自網絡。
引用地址:http://www.cnblogs.com/jifeng/archive/2011/03/17/1987019.html
http://www.blogjava.net/sunzhong/articles/289139.html