資料庫同時更新多個資料出現主鍵衝突

2021-10-09 06:42:40 字數 430 閱讀 3792

在有序的資料庫列表中,經常會使用到主鍵作為排序的某列。有時候,在刪除或者插入資料的時候,需要將所有相關的資料進行更新。如果是簡單的使用update函式,會出現衝突,如在某個資料庫info中,儲存的資料為:

idvalue110

320530

240450

假設id為主鍵,因為某個原因,需要將id=1的資料刪除,但是要求id得從1開始,且需要連續。這時候需要統一更新id,將每個id減1,一般的sql語句為:

update  info  set  id=id-1;

如果只是這樣子,看起來沒有問題,但是實際上好多時候回報錯。因為更新的時候是按照資料的儲存順序更新的,所以當更新id=3的時候時,此時id=2的資料還未更新,所以就會出現衝突。

update  info  set  id=id-1 order by id;這樣更新就不會再出現衝突了。

ThinkPHP同時操作多個資料庫

除了在預先定義資料庫連線和例項化的時候指定資料庫連線外,我們還可以在模型操作過程中動態的切換資料庫,支援切換到相同和不同的資料庫型別。用法很簡單,只需要呼叫model類的db方法,用法 this db 1,mysql root 123456 localhost 3306 test query 查詢s...

mysql同時查多個庫 資料庫同時查詢多個表

我在同乙個資料庫下建立了三個表 1,表 project projectid projectname 2,表 position positionid positionname 3,表 work workid workprojectid workpositionid workamount worktim...

資料庫多個session同時更新一行

資料庫多個session同時更新一行 資料庫多個session同時更新一行時,如果第一次的更新把where條件改變了,以後的更新操作還會成功嗎?測試 表中資料id 6 session a update test zwf set id 8 where id 6 先執行,不提交 session b up...