PB用ODBC连接Mysql,在数据窗口中插入一条记录,向数据库提交记录后不能自动返回自增列 id(identity value ),在SQL Server下是可以自动返回自增列 id。
测试表test定义如下:
CREATE TABLE test (
id INT NOT NULL AUTO_INCREMENT,
stuname VARCHAR(32) NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8
根据网上一些资料在 pbodb125.ini 文件中增加如下配置,还是不能成功。希望有技术大拿一起交流解决方案。(修改C:\Users\Administrator\appdata\Local\Sybase\PowerBuilder 12.5下的pbodb125.ini成功解决问题)参见:
https://answers.sap.com/questions/10891078/powerbuilder-125-did-not-return-the-identity-value.html
[MySQL]
PBSyntax='MySQL_SYNTAX'
[MySQL_SYNTAX]
GetIdentity='Select @@identity'
;GetIdentity='SELECT LAST_INSERT_ID()'
最后在dw的 updateend 事件中加入代码手动取得 id 临时解决:
// updateend()
// 解决MySQL不能自动返回自增ID的问题
if Lower(describe("id.type")) = "column" then
long ll_id
int i,li_rows
if uf_getsqlid(1,ref ll_id)="MYSQL" then //返回自增ID
li_rows = this.RowCount()
if ll_id>0 and li_rows>0 then
for i=li_rows to 1 step -1
if GetItemStatus(i,0,Primary!)=NewModified! then //update(false,false)
this.object.id.Primary.Original[i] = ll_id
ll_id=ll_id -1
end if
next
end if
end if
end if