如何在select中使用insert语句并返回新的PK值作为select字段

时间:2016-05-25 12:32:13

标签: sql sql-server

我有一个关于插入表格的代码,例如:

Insert Into MyTable(PropertyName,PropertyID)
values('PropertyName1', (if exists(select 1 from PropertyTable where propertyName='PropertyName1') return null
else
insert into PropertyTable(Name) values('PropertyName1')
return scope_Identity()))

我的问题就在那里:

insert into PropertyTable(Name) values('PropertyName1')
return scope_Identity()

如果我的行不存在于我的表中,我首先需要在表中插入新值,然后返回ID以便在上面的插入中使用。 但我不知道怎么做?

1 个答案:

答案 0 :(得分:1)

我不知道您的代码是否完全正常,但使用 scope_identity 的替代解决方案是输出子句。

试试这个并告诉我是否有效:

Insert Into MyTable (PropertyName,PropertyID) values('PropertyName1',
        (if exists(select 1 from PropertyTable where propertyName='PropertyName1') 
                return null
         else
                insert into PropertyTable(Name) 
                output inserted.nameOfYourIDColumn 
                values('PropertyName1')));