如何从Informix中的SQL语句中获取最后插入的ID。我知道DBINFO,但是如何获取类似“插入表名(字段)值(值)”的SQL以返回最后插入的ID?
答案 0 :(得分:3)
使用哪种主语?
有关为SERIAL列创建的值的信息位于SQLCA(SQL通信区域)中。有关为BIGSERIAL列创建的值的信息可通过函数调用获得。有关为SERIAL8列创建的值的信息可通过不同的函数调用获得。但是,ESQL / C和ODBC和JDBC之间的细节不同......如果你同时拥有SERIAL和SERIAL8或BIGSERIAL,你可以找到很多信息(但是有两个类型的原因会有问题。一张桌子。)
问题Informix: how to get an id of the last inserted record提供了类似的信息(感谢seekerOfKnowledge找到它)。
答案 1 :(得分:1)
如果你想要严格的SQL,这似乎有用。
选择tabid 来自“informix”.systables 其中tabname ='sm_job_cost' / * 607 * /
SELECT DBINFO('sqlca.sqlerrd1')FROM systables WHERE tabid = 607; / * 0 * /
插入sm_job_cost(smjc_jb_prodlnk,smjc_prft_ctr)值(1,2)
SELECT DBINFO('sqlca.sqlerrd1')FROM systables WHERE tabid = 607; / * 1 * /
答案 2 :(得分:0)
即使是obvios,@ Belmiris回答中也只有一个注释,可能会使新手感到困惑: 要检索最后插入的序列值,无需在SELECT DBINFO查询中指定tabid。只是
从systables LIMIT 1中选择SELECT DBINFO('sqlca.sqlerrd1')就足够了。