列出Oracle模式中的所有约束

时间:2016-02-28 15:53:12

标签: sql oracle foreign-keys

我有一个代码块来列出我在一组表中的约束,但它给出了这个错误:

ORA-00904: "TOTAL_CUSTOMER_COUNTRY": invalid identifier
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:
Error at Line: 7 Column: 1

每次从语句中删除表时,错误都是一样的。我试过在''标记中包含表格,但输出是空白的。

SELECT a.owner, a.table_name, constraint_type, a.constraint_name, 
column_name, search_condition, r_constraint_name 
FROM user_constraints A, user_cons_columns B 
WHERE A.constraint_name  = B.constraint_name 
AND A.table_name IN (bank_account, basket, country, credit_card,
customer, item, orders, paypal, seller, total_balance, 
total_customer_country) 
ORDER BY A.table_name, constraint_type;

以下是我正在使用的整个声明,我不确定错误来自何处。任何帮助都会非常感谢

1 个答案:

答案 0 :(得分:1)

您正在查询数据字典视图。 TOTAL_CUSTOMER_COUNTRY不是USER_CONSTRAINTS或USER_CONS_COLUMNS的属性。它是一个字面值 - 一个表名 - 所以你需要引用它。

  

“我已尝试将表格包含在''标记中,但输出为空白。”

Oracle以大写形式存储对象名称。所以你也需要改变案例。

此版本的查询应选择所需表格的详细信息。

SELECT a.owner, a.table_name, constraint_type, a.constraint_name, 
column_name, search_condition, r_constraint_name 
FROM user_constraints A, 
     user_cons_columns B 
WHERE A.constraint_name  = B.constraint_name 
AND A.table_name IN ('BANK_ACCOUNT', 'BASKET', 'COUNTRY', 'CREDIT_CARD',
'CUSTOMER', 'ITEM', 'ORDERS', 'PAYPAL', 'SELLER', 'TOTAL_BALANCE', 
'TOTAL_CUSTOMER_COUNTRY') 
ORDER BY A.table_name, constraint_type;