在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