我从来没有尝试过,但你可以通过创建一个可更新的视图然后将记录插入到视图中来完成你所要求的。
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)