2014-01-12 46 views
-1

我有一個具有以下字段的表:更新布爾時間

ID(INT) 鎖定(布爾) lastlocked(時間戳) 消息(文本)

我想通過檢查來查詢數據庫: 1.表是否被鎖定? 2.如果鎖定,是否鎖定超過10分鐘? 2a。如果超過10分鐘,請將bool更改爲0. 2b。如果少於10分鐘前,返回,最好帶有「鎖定表」之類的錯誤消息。

鎖定的原因是在別人正在編輯時阻止編輯郵件。 如果超過10分鐘過去了,編輯消息的客戶端可能會崩潰或無法繼續更新(無論出於何種原因)。

+1

而不是存儲它是否被鎖定,並檢查,是否有一個原因,你不只是檢查它是否在過去的十分鐘內被鎖定(由別人,似乎沒有存儲在桌子上?) –

+0

@RowlandShaw請你詳細說明一下。我不明白你的意思。 – Rickard

回答

0

如果您創建了臨時表來檢查數據,然後根據第一個查詢的結果,通過包含UPDATE的CASE/WHEN或IF/THEN來執行該操作。爲MySQL但像這樣的東西不知道確切的語法:

SELECT ID,鎖定,lastlocked,消息 FROM消息 WHERE ID = 1 並鎖定= 1;

CASE when lastlocked> now - 10 minutes THEN UPDATE messages SET locked = 0;