楽観的ロックと呼ばれるものがあります。しかし、行がロックされていることを「報告」するという問題は解決しません。ほとんどの場合、レポートは役に立ちませんが、プログラムで解決できます。
そのロックは、デスクトップ アプリを作成しているか、Web アプリを作成しているかによって異なりますが、ほとんどの場合、余分な列 (タイムスタンプ) を使用して一定期間行をロックすることで解決されます。
ユーザーに行がロックされていると報告したプロジェクトを1つ作成し、2つのフィールド(開始時間、終了時間)で解決しました。行を更新するために人に可変の時間を与えたかったからです。
サンプル:
query: select a, b, c, d, start_time, end_time FROM table
Program : if ((datetime.now()-start time > 1min) or (end_time <> null))
{
update table
SET start_time = datetime.now()
set end_time = null
where A = a and B = b and C= c and D = d, and START_TIME = start_time
--big caps is current value, small caps value from last select ( and that is OPTIMISTIC concurency).
}
else
{
messagebox.show ("You suck, cant be changed") --personal touch :-)
}
行を更新するときは、end_time を配置することを忘れないでください。
OFC、時間確認、内更新可能
編集:私はオラクルのrow_scnからそのアイデアを得たので、革新的なものではありません