db2 IDENTITY_VAL_LOCAL() 行为

问题描述 投票:0回答:3

我想在插入后立即检索为标识列创建的最后一个 ID,并且我想使用 IDENTITY_VAL_LOCAL()。在我的测试过程中,我有两种不同的行为。

当我使用这样的指令时,效果很好。

 INSERT INTO(fld1,fld2, ..) VALUES (val1,val2 )
  

但是当我调用更复杂的插入时,NULL 会返回给我。我有类似的东西:

 INSERT INTO(fld1,fld2, ..) SELECT a,b,c,.. FROM tbl1,tbl2.. WHERE ...

是因为它只适用于 INSERT/VALUE 调用还是我应该看看其他的东西?

sql db2
3个回答
2
投票

就用这个:

VALUES IDENTITY_VAL_LOCAL()


1
投票

试试这个

INSERT INTO Tablename(fld1,fld2, ..) VALUES (val1,val2 )

SELECT SCOPE_IDENTITY()

INSERT INTO Tablename(fld1,fld2, ..) SELECT a,b,c,.. FROM tbl1,tbl2.. WHERE ...

SELECT SCOPE_IDENTITY()

-1
投票

检索最后插入的标识列的正确语法是:

SELECT IDENTITY_VAL_LOCAL() AS IDENTITY FROM SYSIBM.SYSDUMMY1

© www.soinside.com 2019 - 2024. All rights reserved.