0

如何从 Informix 中的 SQL 语句中获取最后插入的 ID。我知道 DBINFO,但是如何让 SQL 像“插入 table_name(字段)值(值)”来返回最后插入的 ID?

4

3 回答 3

3

哪种宿主语言?

有关为 SERIAL 列创建的值的信息位于 SQLCA(SQL 通信区)中。有关为 BIGSERIAL 列创建的值的信息可通过函数调用获得。有关为 SERIAL8 列创建的值的信息可通过不同的函数调用获得。但是,ESQL/C 和 ODBC 和 JDBC 之间的细节有所不同,并且......如果您同时拥有 SERIAL 和 SERIAL8 或 BIGSERIAL,您可以找到大量信息(但会有关于为什么您同时拥有这两种类型的问题)一张桌子)。

Informix: how to get an id of last insert record的问题提供了与此类似的信息(感谢seekerOfKnowledge找到它)。

于 2013-08-02T15:52:12.443 回答
2

如果您想要严格的 SQL,这似乎可行。

select tabid FROM "informix".systables where tabname = 'sm_job_cost' /* 607 */

从系统表中选择 DBINFO('sqlca.sqlerrd1') WHERE tabid = 607; /* 0 */

插入 sm_job_cost (smjc_jb_prodlnk, smjc_prft_ctr) 值 (1, 2)

从系统表中选择 DBINFO('sqlca.sqlerrd1') WHERE tabid = 607; /* 1 */

于 2017-03-15T11:32:39.870 回答
0

即使它是明显的,也只是@Belmiris 答案上的一个注释,可能会让新手感到困惑:要检索最后插入的序列值,您不需要在 SELECT DBINFO 查询中指定 tabid。只是一个

SELECT DBINFO('sqlca.sqlerrd1') FROM systables LIMIT 1 就足够了。

于 2019-03-11T10:18:18.103 回答