首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否在插入时插入SCOPE_IDENTITY?

是否在插入时插入SCOPE_IDENTITY?
EN

Stack Overflow用户
提问于 2020-08-16 18:45:51
回答 2查看 38关注 0票数 0

是否在插入时插入SCOPE_IDENTITY

我有两个步骤来完成这项工作:

代码语言:javascript
运行
复制
INSERT INTO MyDB (Name, Path, File) 
VALUES ('1', 'D:\', '1.Pdf') SELECT SCOPE_IDENTITY() AS ID;

INSERT INTO OtherDB (New, Barcode, FileId)
VALUES ('2', '1', ID);

第二个insert中的值ID来自第一个insert返回的SCOPE_IDENTITY()

有没有办法一步到位呢?

例如:

代码语言:javascript
运行
复制
INSERT INTO OtherDB (New, Barcode, FileId)
VALUES ('2', '1', INSERT INTO MyDB (Name, Path, File) 
                  VALUES ('1', 'D:\', '1.Pdf') SELECT SCOPE_IDENTITY() AS ID);
EN

回答 2

Stack Overflow用户

发布于 2020-08-16 18:48:39

使用OUTPUT要安全得多

代码语言:javascript
运行
复制
declare @ids table (id int);

Insert Into MyDB (Name, Path, File)
    output inserted.id into @ids
    Values ('1' ,'D:\', '1.Pdf');

insert into otherdb (New, Barcode, FileId)
    select '2', '1', i.id
    from @ids i;

至于你的问题,这基本上需要两次插入,因为你想插入到两个表中。您可以通过创建合并这两个表的视图并在视图上使用触发器来解决此问题。

票数 1
EN

Stack Overflow用户

发布于 2020-08-16 19:46:44

我同意@GordonLinoff的观点,即OUTPUT子句在这里很有用。此外,还可以在一条INSERT语句中使用OUTPUT插入两个不同的表。

代码语言:javascript
运行
复制
INSERT INTO MyDB (Name, Path, [File]) 
OUTPUT '2', '1', inserted.ID INTO OtherDB
VALUES ('1', 'D:\', '1.Pdf');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63435909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档