创建表时重新使用约束
问题描述:
创建表时如何重用先前列中提到的约束?创建表时重新使用约束
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,
);
答
为其他列重新使用约束是不可能的。如果需要,您必须将其定义为其他列
答
域约束将在域的任何实例上执行。另外:改变时,你只能在一个地方改变它。 (语法可能在实现之间略有不同)
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
你的问题是什么? – reporter 2012-07-20 08:43:11
欢迎使用*:如果您发布代码,XML或数据样本,请**在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码样本”按钮(“{}”)以精确地格式化和语法突出它! – 2012-07-20 08:44:32
使它成为一个域约束,并让from_stn和to_stn都基于该域。 – wildplasser 2012-07-20 10:52:40