我有一個數據庫表,記錄其他表中發生的更改。我的日誌表的表結構如下。以正確的方式執行jdbc事務
Log_Table(id, table_name, operation, flag)
values (1, Customer_Table, 1, 1);
values (2, Customer_Table, 2, 1);
values (3, Customer_Table, 1, 1);
values (4, Customer_Table, 2, 1);
values (5, Customer_Table, 1, 1);
我做以下操作更新對網頁上的按鈕,這個表:
/* first */
public List<Long> select_Changes()
{
select id from Log_Table where flag =1;
}
/* (wait for user input) */
/* second */
public void update_table(List<Long> ids)
{
update Log_Table set flag =0 where id in(ids)
}
問題是,第一和第二操作之間的由用戶進行操作。同時另一個用戶同時進行相同的操作。我不希望第一個用戶已經選擇的行被第二個用戶選中;也就是說,當第二用戶運行的第一個步驟(假設兩個行,因爲第一個用戶運行它已添加),結果應該是:
values(6,Customer,2,1);
values(7,Customer,1,1);
請建議我應該怎麼辦呢?在選中行後,我需要鎖定行以進行任何操作。我嘗試選擇更新子句,但它沒有解決問題。它在一個Web應用程序中。
我添加了一個時間戳列和一個額外的表結構 Last_Oeration_Time(ID號,時間:LAST_TIMEBREAK時間戳(6)) – bilalhaider