【发布时间】:2013-05-06 16:33:25
【问题描述】:
我使用的是 SQL Server 2008。这是我的示例表
SEQ NAME GROUP
1 abc 1
2 bcd 1
3 cde 3
在上表中,SEQ 是我的身份列(自动编号)。如果我想插入一个 name = 'def' 和 group = 3 的新行,我可以这样做
INSERT INTO SampleTable(NAME, GROUP) VALUES ('def',3)
现在,如果我想插入一个新行,然后设置新插入行的 GROUP = SEQ,我分两步进行,如下所示
INSERT INTO SampleTable(NAME, GROUP) VALUES ('def',999)
UPDATE SampleTable SET GROUP = SEQ where NAME = 'def'
有什么方法可以一步完成吗?例如
INSERT INTO SampleTable(NAME, GROUP) VALUES ('def',SCOPE_IDENTITY())
上述语句显然不起作用,因为 SCOPE_IDENTITY() 仅在插入完成后设置。但是有没有办法使用单个插入语句来设置 GROUP = SEQ?
【问题讨论】:
-
有什么特殊原因必须在单个命令中完成?
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
@YuriyGalanter - 不。我只是想看看是否有更好或更优雅的方法来做到这一点
标签: sql-server sql-server-2008 tsql