当我插入到第一个表中时是否可以填充第二个表?插入到一个表中,将ID插入到第二个表中
将帖子插入到table1 - > table 2列中,收到table1帖子的唯一ID。
我到目前为止,我在正确的轨道上?
CONSTRAINT [FK_dbo.Statistics_dbo.News_News_NewsID] FOREIGN KEY ([News_NewsID]) REFERENCES [dbo].[News] ([NewsID])
当我插入到第一个表中时是否可以填充第二个表?插入到一个表中,将ID插入到第二个表中
将帖子插入到table1 - > table 2列中,收到table1帖子的唯一ID。
我到目前为止,我在正确的轨道上?
CONSTRAINT [FK_dbo.Statistics_dbo.News_News_NewsID] FOREIGN KEY ([News_NewsID]) REFERENCES [dbo].[News] ([NewsID])
很多方法:
insert
触发insert
后读取SCOPE_IDENTITY()
,并用它做了第二次output
条款执行插入示例:
1:
create trigger Foo_Insert on Foo after insert
as
begin
set nocount on
insert Bar(fooid)
select id from inserted
end
go
insert Foo (Name)
values ('abc');
2:
insert Foo (Name)
values ('abc');
declare @id int = SCOPE_IDENTITY();
insert Bar(fooid)
select @id
3:
insert Bar(fooid)
select id from (
insert Foo (Name)
output inserted.id
values ('abc')) x
我能想到的唯一的事情就是您可以使用触发器来实现此目的。没有什么“内置”SQL Server的,可以做到这一点。为什么不从你的.NET代码中完成呢?
是的,它听起来像你想要一个SQL触发器,这将允许你基于一个表上的动作触发逻辑,在数据库中执行其他动作。下面是创建简单的SQL另一篇文章触发器
SQL Server 2008 - Help writing simple INSERT Trigger
一个谨慎的词,这会做更新的新表,你写任何的C#代码之外的所有逻辑,这听起来不错不必预先管理它,但是你也会失去对何时发生的控制。
因此,如果您以后需要做一些不同的事情,现在您必须更新常规代码以及触发代码。这种类型的逻辑绝对可以在大型系统中增长,并成为维护的噩梦。考虑到这一点,另一种方法是构建一个方法,在插入第一个表后将该ID添加到新表中。
虽然我不知道你用什么做你插入假设它是一个SQL命令你可以回到上使用SCOPE_IDENTITY插入标识列的ID,发现这里
How to insert a record and return the newly created ID using a single SqlCommand?
如果是EF或其他一些ORM工具,他们应该自动更新实体,或者有其他机制来传递这些数据。
这只是你在数据库上执行你想要的约束。现在你需要编写代码。如果您遇到问题/问题,请在此提出您的问题。但是只有在你编写代码之后。 –