2
我需要更新db(PostgreSQL)中的單個匹配記錄,但Limit方法不適用於Update方法。此代碼將更新所有匹配Where條件而不是單條記錄的記錄。Laravel 5更新單行限制不起作用
DB::table("records")
->where('need_moderate','=','no')
->where('locked_per_time','<',$date_now->format("Y-m-d H:i:s"))
->limit(1)
->update(["locked_per_time"=>$locked_per->format("Y-m-d H:i:s"),'locked_by'=>$mdkey]);
我如何解決此所以只有單一的記錄將被更新?
不幸的是代碼無法正常工作。即使有2-4個線程,相同的記錄仍然釋放到不同的線程。我假設在第一個線程更新之前執行第二個線程的內部選擇。 我將不勝感激。 – Nelex
我不確定我是否理解。請提供更詳細的背景介紹您希望更新過程如何工作。 – Bogdan
對於每個查詢,我們通過更改其locked_per_time來更新記錄。在此之後,我們從這個記錄中獲取數據。雖然當前日期小於locked_per_time,但該記錄不應該對其他線程有效,並且永遠不會執行兩次。但即使有我在運行多個線程時提供的代碼,它們也會在第一個線程更新之前以某種方式獲得相同的記錄locked_per_time – Nelex