从SQL Server到postgresql的DBLink:获取序列nextval

时间:2012-01-25 17:47:26

标签: sql-server postgresql rpc dblink

我有一台需要连接到POSTGRESQL 9.0服务器的SQL Server 2008。

我需要的任务之一是在POSTGRESQL上获取序列的下一个值

示例1:

execute ('select nextval( ''cadastro.pessoa_seq'' )' ) at POSTGRESQL ;

错误:

  

消息7215,级别17,状态1,行1无法执行语句   远程服务器' POSTGRESQL'。*

示例2:

select * from openquery( POSTGRESQL ,'select nextval( ''cadastro.pessoa_seq'' )')

错误:

  

Msg 7399,Level 16,State 1,Line 1 OLE DB提供程序" MSDASQL"对于   链接服务器" POSTGRESQL"报告错误。提供者报告了一个   意外的灾难性失败。 Msg 7350,Level 16,State 2,Line 1   无法从OLE DB提供程序获取列信息" MSDASQL"对于   链接服务器" POSTGRESQL"。*

这些选项都不起作用!

有什么好的选择吗?

提前谢谢

2 个答案:

答案 0 :(得分:1)

处理ODBC源和postgres我必须这样做:

nextval(''cadastro.pessoa_seq''::regclass) for it to work 

答案 1 :(得分:0)

也许您的Postgresql连接是只读的,您是否尝试过执行更新/插入请求?

nextval更新序列,尝试:

currval(''cadastro.pessoa_seq''::regclass)