--鎖定記錄,只允許單使用者修改的例子:
--建立測試環境
--建立測試表--部門表
create table 部門(departmentid int,name varchar(10))
--記錄鎖定表
create table lock(departmentid int,dt datetime)
go--因為函式中不可以用getdate,所以用個檢視,得到當前時間
create view v_getdate as select dt=getdate()
go--建立自定義函式,判斷記錄是否鎖定
create function f_chk(@departmentid int)
returns bit
asbegin
declare @re bit,@dt datetime
select @dt=dt from v_getdate
if exists(select 1 from lock where departmentid=@departmentid
and datediff(ss,dt,@dt)<5)
set @re=1
else
set @re=0
return(@re)
endgo
--資料處理測試
if dbo.f_chk(3)=1
print '記錄被鎖定'
else
begin
begin tran
insert into lock values(3,getdate())
update 部門 set name='a' where departmentid=3
delete from lock where departmentid=3
***mit tran
end--刪除測試環境
drop table 部門
drop view v_getdate
drop function f_chk
create table #鎖表(編號 int,時間 datetime)
--**:
if exists(select 1 from 編號='你的編號' and datediff(ss,時間,getdate())<5 --如果鎖的時候超過5秒,則是處理超時
) return
delete from #鎖表
insert #鎖表 values('你的編號',getdate())
.....你處理的**
delete #鎖表 where 編號='你的編號'
鎖定資料記錄
鎖定資料記錄ado元件有一個非常好的屬性locktype,可用於鎖定記錄,這樣當一個更新開始之前可以去檢查這個屬性,如果還在鎖定狀態,則需要等待,以避免更新衝突.該屬性具體說明如下 locktype 屬性 指示編輯過程中對記錄使用的鎖定型別。設定和返回值 設定或返回以下某個 locktypeenum...
oracle 記錄被鎖定
select object id,session id,locked mode from v locked object select t2.username,t2.sid,t2.serial t2.logon time from v locked object t1,v session t2 wh...
MYSQL select時鎖定記錄問題
在使用sql時,大都會遇到這樣的問題,你update一條記錄時,需要通過select來檢索出其值或條件,然後在通過這個值來執行修改操作。但當以上操作放到多執行緒中併發處理時會出現問題 某執行緒select 了一條記錄但還沒來得及 update 時,另一個執行緒仍然可能會進來 select 到同一條記...
當前記錄被另一使用者鎖定,解除鎖定
被鎖的原因就是有人在你之前修改記錄,此時oracle會通過事務鎖鎖住這個記錄,而且這個修改記錄的人還沒有提交或回滾記錄,接下來你又試圖修改同一條記錄,你就會被這個事務鎖所阻塞。處理方法很簡單,可以有以下兩種方法 1.找到在你之前修改記錄的那個人,讓他在他的修改記錄的會話裡做一下 commit或rol...
oracle被鎖定的記錄解鎖
下面是我在開發中遇到的一個問題,通過以下的方法很好的解決了,下面部分是我從別的網頁中摘下來的,以防自己忘記。oracal資料庫中的一個表的一條記錄被鎖定,既不能修改也不能刪除 只看到沙漏,等一個小時都是這樣 刪除表物件也不行,報錯 ora 00054 資源正忙,要求指定nowait 解決方法 1 當...