您好我试图在我的一个表中显示约束但由于某种原因我得到的消息没有选择行。以下是我创建的表格。
Create table Teams (
TeamID varCHAR2(4) constraint Teams_TeamID_PK Primary Key,
TeamName VARCHAR2(40)
);
这是我用来显示约束的代码。
SELECT constraint_name,
constraint_type,
search_condition
FROM USER_CONSTRAINTS
WHERE table_name = 'Teams';
我是菜鸟,所以我想确保我明白了什么是错的。我试图放弃表认为我的约束没有采取 - 我没有,我创建表时也没有收到任何错误,我在另一个表中引用TeamID。因此,当我尝试删除表时,我收到的错误消息是我希望的。
答案 0 :(得分:20)
试试这个:
SELECT constraint_name,
constraint_type,
search_condition
FROM USER_CONSTRAINTS
WHERE table_name = 'TEAMS';
除非在创建时使用双引号,否则Oracle中的所有对象名称都是大写。
答案 1 :(得分:3)
使用以下代码:
show create table table_name;
答案 2 :(得分:2)
我个人使用:
SELECT * FROM all_constraints WHERE Table_Name = <TableName>;
答案 3 :(得分:1)
如果您更喜欢CamelCase名称,那么您的创建表脚本应该是:
Create table "Teams" (
"TeamID" varCHAR2(4) constraint "Teams_TeamID_PK" Primary Key,
"TeamName" VARCHAR2(40)
);
没有双引号Oracle有助于将所有标识符转换为大写:)
答案 4 :(得分:1)
select dbms_mview.get_ddl('TABLE',USER,'TEAMS') from dual;
答案 5 :(得分:0)
在单引号内的where
子句中以大写形式键入表名。
e.g。 WHERE table_name = 'TEAMS';