作者:
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時用交易模式去做了