11

您好,我正在尝试在我的一个表中显示约束,但由于某种原因,我收到消息没有选择行。下面是我创建的表。

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。因此,当我尝试删除表格时,我会收到一条错误消息,这正是我所希望的。

4

6 回答 6

23

试试这个:

SELECT constraint_name, 
       constraint_type,
       search_condition
  FROM USER_CONSTRAINTS
 WHERE table_name = 'TEAMS';

除非在创建时双引号,否则 Oracle 中的所有对象名称都是大写的。

于 2009-12-03T06:04:38.640 回答
5

我个人使用:

SELECT * FROM all_constraints WHERE Table_Name = <TableName>;
于 2016-11-04T08:28:58.033 回答
3

使用以下代码:

show create table table_name;
于 2014-03-21T04:02:50.777 回答
1

如果您更喜欢 CamelCase 名称,那么您的创建表脚本应该是:

Create table "Teams" ( 
  "TeamID" varCHAR2(4) constraint "Teams_TeamID_PK" Primary Key, 
  "TeamName" VARCHAR2(40)  
); 

没有双引号,Oracle 有助于将所有标识符转换为大写 :)

于 2009-12-03T09:06:21.330 回答
1
select dbms_mview.get_ddl('TABLE',USER,'TEAMS') from dual;
于 2009-12-03T12:31:21.873 回答
1

where在单引号内的子句中以大写形式键入表名。

例如WHERE table_name = 'TEAMS';

于 2017-04-13T07:10:43.087 回答