首页 文章

为什么使用postgresql odbc驱动程序调用IDENT_CURRENT?

提问于
浏览
2

我正在迁移Access 2003应用程序以访问2010.该应用程序使用postgres odbc驱动程序来访问其数据 .

在访问2010时,它尝试使用postgresql服务器上的IDENT_CURRENT函数(如wireshark所示)来识别最近插入的行的ID ...不幸的是,据我所知,IDENT_CURRENT不是postgresql支持的函数...

我使用最新的postgresql ODBC驱动程序(9.0)与postgresql 8.3数据库 .

1 回答

  • 1

    使用currval是正确的方法(强调我的):

    返回当前会话中此序列的nextval最近获得的值 . (如果在此会话中从未为此序列调用nextval,则会报告错误 . )因为这会返回会话本地值,所以无论其他会话是否已执行nextval,都会提供可预测的答案 .

    并将其包装在 IDENT_CURRENT 函数中是一种非常合理的移植技术 .

    您也可以在 INSERT 语句中使用RETURNING id(再次强调我的):

    可选的RETURNING子句使INSERT根据实际插入的每一行计算和返回值 . 这主要用于获取默认提供的值,例如序列号 .

    这可能会更快更清洁但你仍然有一些可移植性问题 . OTOH,我认为无论你做什么,你都会遇到便携性问题 .

相关问题