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

ドメインの制約は、ドメインのすべてのインスタンスに適用されます。また、変更すると、1 か所だけ変更する必要があります。(構文は実装によって若干異なる場合があります)

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 に答える