我從來沒有嘗試過,但你可以通過創建一個可更新的視圖然後將記錄插入到視圖中來完成你所要求的。
UPDATE
我只是嘗試它,它看起來並不像它會工作。
消息4405,級別16,狀態1, 視圖或函數「Data_t_and_Data_Link_t」行是不可更新,因爲修改會影響多個基表。
我想這僅僅是所有關係數據庫理論純粹主義者討厭SQL Server的一件事。
另一個更新
進一步的研究發現了一種方法來做到這一點。它可以通過一個視圖和一個「而不是」觸發器來完成。
create table Data_t
(
DataID int not null identity primary key,
[LEFT] tinyint,
)
GO
create table Data_Link_t
(
DataID int not null primary key foreign key references Data_T (DataID),
[RIGHT] smallint,
)
GO
create view Data_t_and_Data_Link_t
as
select
d.DataID,
d.[LEFT],
dl.[RIGHT]
from
Data_t d
inner join Data_Link_t dl on dl.DataID = d.DataID
GO
create trigger trgInsData_t_and_Data_Link_t on Data_t_and_Data_Link_T
instead of insert
as
insert into Data_t ([LEFT]) select [LEFT] from inserted
insert into Data_Link_t (DataID, [RIGHT]) select @@IDENTITY, [RIGHT] from inserted
go
insert into Data_t_and_Data_Link_t ([LEFT],[RIGHT]) values (1, 2)