我试图在我的表上显示约束,但由于某种原因我没有选择任何行。 (我使用的是Oracle sqlplus)
-- Table: staff
CREATE TABLE staff (
eno NUMBER(3,0) UNIQUE NOT NULL,
ename VARCHAR (30),
title VARCHAR (10) CHECK (title IN ('Doctor','Nurse')),
PRIMARY KEY (
eno
)
);
INSERT INTO staff (eno, ename, title) VALUES (101, 'Zhivago', 'Doctor');
INSERT INTO staff (eno, ename, title) VALUES (102, 'Welby', 'Doctor');
INSERT INTO staff (eno, ename, title) VALUES (103, 'Jekyl', 'Doctor');
INSERT INTO staff (eno, ename, title) VALUES (104, 'Caligari', 'Doctor');
INSERT INTO staff (eno, ename, title) VALUES (105, 'Nightingale', 'Nurse');
INSERT INTO staff (eno, ename, title) VALUES (106, 'Ratchet', 'Nurse');
当我尝试描述和选择时,我得到了这个
SQL> DESCRIBE staff;
Name Null? Type
----------------------------------------- -------- ----------------------------
ENO NOT NULL NUMBER(3)
ENAME VARCHAR2(30)
TITLE CHAR(10)
SQL> SELECT * FROM staff;
101 Zhivago Doctor
102 Welby Doctor
103 Jekyl Doctor
104 Caligari Doctor
105 Nightingale Nurse
106 Ratchet Nurse
6 rows selected.
然而,当我试图显示约束时,我得到了
SQL> SELECT X.constraint_name, X.constraint_type, X.status, X.validated,
2 X.search_condition, Y.column_name, Y.position
3 FROM user_constraints X, user_cons_columns Y
4 WHERE X.constraint_name = Y.constraint_name
5 AND X.table_name = 'staff';
no rows selected
我是菜鸟,所以我想确保我明白了什么是错的。提前谢谢。
答案 0 :(得分:0)
非常感谢@LauDec。 正如你所说,当我用所有CAP字母更改我的表格时,它运作良好。
SQL> SELECT X.constraint_name, X.constraint_type, X.status, X.validated,
2 X.search_condition, Y.column_name, Y.position
3 FROM user_constraints X, user_cons_columns Y
4 WHERE X.constraint_name = Y.constraint_name
5 AND X.table_name = 'STAFF';
SYS_C002637566 C ENABLED VALIDATED
"ENO" IS NOT NULL
ENO
SYS_C002637567 C ENABLED VALIDATED
title IN ('Doctor','Nurse')
TITLE
SYS_C002637568 P ENABLED VALIDATED
ENO
1