楼主:
LaPass (LaPass)
2014-11-21 12:41:05※ 引述《joedenkidd (优质的蓝色射手)》之铭言:
: Hi All:
: $up_sql="update db set value=1 where id='123' and sn='2345'";
: $up_exec=pg_exec($server_link,$up_sql);
: $up_result=pg_affected_rows($up_exec);
: if($up_result==0)
: {
: $ins_sql="insert into db(id,sn) values('234','aaa')";
: $ins_exec=pg_exec($server_link,$ins_sql);
: }
: 以上是我资料更新或新增的程式,正常来说,当 db里面有 id='123',sn='2345'的时候
: pg_affected_rows的值并不会等于0
: 所以我用这种方式来判断资料是要更新或是新增,
: 可是观察了一阵子,发现还是有部分的资料,会
: 被重复写入,不知道这样子是出了什么问题,请
: 各位指点一下,拜托...
: 程式:PHP
: DB : POSTGRESQL
解决方法
http://stackoverflow.com/questions/1109061
最好的方式是在sql里面一次做完
数据库内部自己会去做执行绪安全问题
但PHP在搞执行绪的问题上很糟糕
所以尽量在sql里面一口气搞定
在要不然.....
你就只能下sql时用交易模式去做了