31. Evaluate the following SQL commands:

SQL>CREATE SEQUENCE ord_seq    

INCREMENT BY 10    

START WITH 120    

MAXVALUE 9999    

NOCYCLE;

SQL>CREATE TABLE ord_items       

(ord_no NUMBER(4)DEFAULT ord_seq.NEXTVAL NOT NULL,        

item_no NUMBER(3),        

qty NUMBER(3) CHECK (qty BETWEEN 100 AND 200),

  

expiry_date date CHECK (expiry_date > SYSDATE),        

CONSTRAINT it_pk PRIMARY KEY (ord_no,item_no),        

CONSTRAINT ord_fk FOREIGN KEY(ord_no) REFERENCES orders(ord_no));

The command to create a table fails. Identify the reason for the SQL statement failure? (Choose all that

apply.)

A. You cannot use SYSDATE in the condition of a CHECK constraint.

B. You cannot use the BETWEEN clause in the condition of a CHECK constraint.

C. You cannot use the NEXTVAL sequence value as a DEFAULT value for a column.

D. You cannot use ORD_NO and ITEM_NO columns as a composite primary key because ORD_NO is

also the FOREIGN KEY.

Answer: AC

 

答案解析:

scott@TESTDB> create sequence ord_seq

  2  increment by 10

  3  start with 120

  4  maxvalue 9999

  5  nocycle;

 

Sequence created.

 

scott@TESTDB>  CREATE TABLE ord_items

  2  (expiry_date date CHECK (expiry_date > SYSDATE));

(expiry_date date CHECK (expiry_date > SYSDATE))

                                       *

ERROR at line 2:

ORA-02436: date or system variable wrongly specified in CHECK constraint

A 、SYSDATE不能用在CHECK约束中,对

 

scott@TESTDB>  CREATE TABLE ord_items

  2  (qty NUMBER(3) CHECK (qty BETWEEN 100 AND 200));

 

Table created.

B、BETWEEN可以用在约束中,B错

 

 

scott@TESTDB>  CREATE TABLE ord_items

  2  (ord_no NUMBER(4)DEFAULT ord_seq.NEXTVAL NOT NULL);

(ord_no NUMBER(4)DEFAULT ord_seq.NEXTVAL NOT NULL)

                         *

ERROR at line 2:

ORA-00984: column not allowed here

 

C、NEXTVAL不能用作默认值,C对

 

 

sh@TESTDB> create table  orders

  2  (ord_no number primary key);

 

Table created.

 

sh@TESTDB> create table ord_items

  2  (ord_no number not null,

  3  item_no number,

  4  constraint ord_fk foreign key(ord_no) references orders(ord_no),

  5  constraint it_pk primary key(ord_no,item_no));

 

Table created.

 

D、外键约束和字段可以和本表组合成主键,D错。