2

创建表时,如何重用前一列提到的约束?

create table ticket_details(
  from_stn char(3)
  constraint chk check(from_stn in ('vsh','mas','ndl'))
  constraint nn NOT NULL,
  to_stn char(3)
  constraint nn1 NOT NULL, (instead of crea)
  seat_no number(3)
  constraint PK primary key,
); 
4

2 回答 2

3

域约束将在域的任何实例上强制执行。另外:更改后,您只需在一个地方进行更改。(实现之间的语法可能略有不同)

CREATE DOMAIN THE_STN CHAR(3) constraint THE_STN_check_da_value check(VALUE in ('vsh','mas','ndl'))
        ;

CREATE table ticket_details
        ( seat_no INTEGER NOT NULL PRIMARY KEY
        , from_stn THE_STN NOT NULL
        , to_stn THE_STN
        );
INSERT INTO ticket_details(seat_no,from_stn,to_stn) VALUES (1, 'vsh', 'ndl' ); -- succeeds
INSERT INTO ticket_details(seat_no,from_stn,to_stn) VALUES (2, 'vsh', NULL ); -- succeeds
INSERT INTO ticket_details(seat_no,from_stn,to_stn) VALUES (2, 'lol', 'mas' ); -- fails
于 2012-07-20T11:05:57.770 回答
0

无法对另一列重用约束。如果需要,您必须为其他列定义它

于 2012-07-20T08:46:09.527 回答