在INSERT语句之后获取SERIAL列的值的最有效方式是什么?即我正在寻找一种方法来复制MS SQL的@@IDENTITY
或SCOPE_IDENTITY
的功能Informix:如何获取最后插入的记录的标识
回答
最后一个SERIAL插入的值作为sqlerrd数组中的第二个条目存储在SQLCA记录中。 Brian的答案对于ESQL/C是正确的,但是你没有提到你使用的是什么语言。
如果你正在写一个存储过程,该值可以由此发现:
LET new_id = DBINFO('sqlca.sqlerrd1');
也可以在$sth->{ix_sqlerrd}[1]
如果使用DBI
有其他语言/接口变种中发现,但我相信你会明白的。
我已经看到了这个使用。
if LOCAL_SQLCA^.sqlcode = 0 then
/return serial */
Result := LOCAL_SQLCA^.sqlerrd[1]
else
/* return error code */
Result := -(Abs(LOCAL_SQLCA^.sqlcode));
我不认为“高效”是你在这里寻找的词。这更多的是准确性问题。我不确定我可以比SQL Books Online更好地解释它,但通常情况下,除非您真的知道自己在做什么并且有使用@@ IDENTITY的特定原因,否则使用SCOPE_IDENTITY。最显而易见的原因是,@@ IDENTITY不会返回由程序/ sp/etc添加的最新记录的身份(如果有附加到该表的触发器)。此外,有可能是在两笔交易发生在同一时间,则会出现以下大批量应用的问题...
- 你插入
- 其他用户插入
- 返回其他用户的身份,你
您可能会注意到,问题是关于Informix,而不是MS SQL – 2008-10-30 19:39:44
OP没有指定正在使用哪个版本的Informix,因此可能会有不同的答案
这是不可靠的 - 其他人可能插入了自插入以来更新,更大的值。 – 2010-01-23 05:50:21
- 1. 在Informix中从SQL本身获取最后插入的标识
- 2. 如何获取PHP中的最后一个插入的标识
- 3. 如何获取刚刚插入的记录标识(mysql)?
- 4. 如何获取最后插入的记录为perticular ID?
- 5. 如何获取Web服务中最后插入的记录ID
- 6. sql server:我如何获取插入的最后一条记录?
- 7. 获取mysql最后插入ID,插入记录后使用PDO
- 8. 如何插入多个记录并获取标识值?
- 9. ASP.NET MVC获取最后添加的记录的标识
- 10. Informix的:如何获得最后插入语句的ROWID
- 11. 如何在插入记录后从SQL服务器获取标识值
- 12. 如何获取最后一个插入记录 - Yii 2
- 13. 获取Google Apps脚本中最后插入的行的标识
- 14. 获取最后插入的mysql行的标识
- 15. 如何获取最后的记录? (JS)
- 16. 如何获取插入记录的ID?
- 17. 如何获得最后插入的标识值
- 18. 获取最后插入的记录的主键与JPA
- 19. SqlAlchemy:获取插入的最后一条记录的ID
- 20. 获取的最后插入记录的ID
- 21. 获取最后插入的记录的值
- 22. PHP来SQLSERVER,获取最后插入的标识
- 23. 获取mysql中最后一个插入行的标识
- 24. 如何获取刚刚插入的最新记录的ID?
- 25. 如何从表中获取最新插入的标识?
- 26. 如何获取最后插入的ID?
- 27. 如何获取插入到oracle中的最后一行的标识
- 28. MS Access TableAdapter插入后获取标识
- 29. 如何获得最后插入的记录
- 30. 如何获取新插入或已存在记录的标识值?
这是哪种语言?是帕斯卡吗?否定的ABS有点奇怪;除非你正在建立一个连接(可惜的是,至少有一个肯定的错误),Informix中的所有错误编号都是负数。 – 2008-11-02 21:04:41