如果這是個別行,我們並不需要斷言所有行的一些屬性與同test1number
值,那麼一個辦法做到這一點是這樣的:
CREATE TABLE test1
(
ID int IDENTITY UNIQUE,
length int not null,
constraint UQ_test1_Length_XRef UNIQUE (ID,Length)
)
go
CREATE TABLE _test2
(
ID int IDENTITY UNIQUE,
test1number int references test1(ID),
_test1length int not null,
distance int not null,
constraint FK_test2_test1_length_xref foreign key (test1number,_test1length)
references test1 (ID,length) on update cascade,
constraint CK_length_distance CHECK (distance <= _test1length)
)
go
create view test2
as
select ID,test1number,distance from _test2
go
create trigger T_I_t2 on test2
instead of insert
as
insert into _test2(test1number,_test1length,distance)
select test1number,length,distance
from inserted i inner join test1 t on i.test1number = t.id
go
我們只需要查看如果您試圖隱藏用戶的_test2
表中這一額外列的存在,則會觸發。
是啊SQL服務器:) – user3162968
如果在'test1'中引用單行的*多*行,是約束「沒有行可能有'距離'大於'長度'」,或者是「總和「距離」值可能不會超過「長度」? –
第一:))距離不能更大 – user3162968