如果这是一个骗局,我很抱歉,我对大约8个问题采取了一些措辞,这些问题并没有解释我在寻找什么。
目的地表(dTable) aID bigint身份 bID bigint(主键)
@JSON表 @Version表
Merge into dTable t
using (select bid from @JSON) s
on t.bid = s.bid
when not matched
then insert(bid)
values (s.bid)
when matched
then update
set bid = s.bid
output
'dTable', @versionDate, action, inserted.bid, s.aid, @userid
into @version (tablename, versiondate, actiontaken, value, pk, userid)
;
想要获取更新值或添加标识的dTable的标识字段。
s.aid返回null,我想我必须做一些像isnull(inserted.aid,@@ identity)这样的事情。由于项目的规模和我的前任...我没有太多的测试环境。
试过@@ Identity,scope_identity,没有感受到爱情。
编辑:AID表示我正在寻找snag的身份,如果某个值不存在,则IE:ColumnName(BID),然后添加BID(人类可读文本的bigint值),从而导致创建新的columnID(AID)。出于版本控制的目的,我想知道AID,因为这个AID将与其他表关联(FK),如_order,_enabled,_unit,_type。
答案 0 :(得分:1)
尝试你的OUTPUT子句:
output 'dTable', @versionDate, action, inserted.bid, inserted.AID, @userid
into @version