怎樣寫sql語句可以加上行級排它鎖
看你需要加哪種類型的鎖:
HOLDLOCK 將共享鎖保留到事務完成,而不是在相應的表、行或數據頁不再需要時就立即釋放鎖。HOLDLOCK 等同于 SERIALIZABLE。
NOLOCK 不要發出共享鎖,并且不要提供排它鎖。當此選項生效時,可能會讀取未提交的事務或一組在讀取中間回滾的頁面。有可能發生臟讀。僅應用于 SELECT 語句。
PAGLOCK 在通常使用單個表鎖的地方采用頁鎖。
READCOMMITTED 用與運行在提交讀隔離級別的事務相同的鎖語義執行掃描。默認情況下,SQL Server 2000 在此隔離級別上操作。
READPAST 跳過鎖定行。此選項導致事務跳過由其它事務鎖定的行(這些行平常會顯示在結果集內),而不是阻塞該事務,使其等待其它事務釋放在這些行上的鎖。 READPAST 鎖提示僅適用于運行在提交讀隔離級別的事務,并且只在行級鎖之后讀取。僅適用于 SELECT 語句。
READUNCOMMITTED 等同于 NOLOCK。
REPEATABLEREAD 用與運行在可重復讀隔離級別的事務相同的鎖語義執行掃描。
ROWLOCK 使用行級鎖,而不使用粒度更粗的頁級鎖和表級鎖。
SERIALIZABLE 用與運行在可串行讀隔離級別的事務相同的鎖語義執行掃描。等同于 HOLDLOCK。
TABLOCK 使用表鎖代替粒度更細的行級鎖或頁級鎖。在語句結束前,SQL Server 一直持有該鎖。但是,如果同時指定 HOLDLOCK,那么在事務結束之前,鎖將被一直持有。
TABLOCKX 使用表的排它鎖。該鎖可以防止其它事務讀取或更新表,并在語句或事務結束前一直持有。
UPDLOCK 讀取表時使用更新鎖,而不使用共享鎖,并將鎖一直保留到語句或事務的結束。UPDLOCK 的優點是允許您讀取數據(不阻塞其它事務)并在以后更新數據,同時確保自從上次讀取數據后數據沒有被更改。
XLOCK 使用排它鎖并一直保持到由語句處理的所有數據上的事務結束時。可以使用 PAGLOCK 或 TABLOCK 指定該鎖,這種情況下排它鎖適用于適當級別的粒度。
簡單說明排它鎖的作用
update 語句加了排它鎖后,只能等到其鎖資源釋放,別的會話才可以對其加鎖,主要是保證事務的一致性。
鎖的基本概念:
鎖是一種用來將數據資源與單個事務關聯起來的機制,其用途是當某個資源與擁有它的事務關聯在一起時,控制其它事務如何與該資源進行交互,通常我們稱與被鎖定資源關聯的事務持有或擁有該鎖。數據庫用鎖來禁止事務訪問其它事務寫入的未提交數據,并禁止其它事務在擁有該鎖的事務使用限制性隔離級別時對這些進行更新,一旦獲得了鎖,事務終止前就一直持有該鎖,該事物終止時釋放鎖,其它事務就可以使用被解鎖的數據資源了。如果一個事務嘗試訪問數據資源的方式與另一個事務持有的鎖不兼容,則該事物必須等待,指導擁有鎖的事務終止為止,這種叫鎖等待事件,當鎖等待事件發生時,嘗試訪問數據資源的事務所做的只是停止執行,直到擁有鎖的事務終止和不兼容的鎖釋放為止。
怎樣寫sql語句可以加上行級排它鎖
看你需要加哪種類型的鎖: HOLDLOCK 將共享鎖保留到事務完成,而不是在相應的表、行或數據頁不再需要時就立即釋放鎖。
HOLDLOCK 等同于 SERIALIZABLE。 NOLOCK 不要發出共享鎖,并且不要提供排它鎖。
當此選項生效時,可能會讀取未提交的事務或一組在讀取中間回滾的頁面。有可能發生臟讀。
僅應用于 SELECT 語句。 PAGLOCK 在通常使用單個表鎖的地方采用頁鎖。
READCOMMITTED 用與運行在提交讀隔離級別的事務相同的鎖語義執行掃描。默認情況下,SQL Server 2000 在此隔離級別上操作。
READPAST 跳過鎖定行。此選項導致事務跳過由其它事務鎖定的行(這些行平常會顯示在結果集內),而不是阻塞該事務,使其等待其它事務釋放在這些行上的鎖。
READPAST 鎖提示僅適用于運行在提交讀隔離級別的事務,并且只在行級鎖之后讀取。僅適用于 SELECT 語句。
READUNCOMMITTED 等同于 NOLOCK。 REPEATABLEREAD 用與運行在可重復讀隔離級別的事務相同的鎖語義執行掃描。
ROWLOCK 使用行級鎖,而不使用粒度更粗的頁級鎖和表級鎖。 SERIALIZABLE 用與運行在可串行讀隔離級別的事務相同的鎖語義執行掃描。
等同于 HOLDLOCK。 TABLOCK 使用表鎖代替粒度更細的行級鎖或頁級鎖。
在語句結束前,SQL Server 一直持有該鎖。但是,如果同時指定 HOLDLOCK,那么在事務結束之前,鎖將被一直持有。
TABLOCKX 使用表的排它鎖。該鎖可以防止其它事務讀取或更新表,并在語句或事務結束前一直持有。
UPDLOCK 讀取表時使用更新鎖,而不使用共享鎖,并將鎖一直保留到語句或事務的結束。UPDLOCK 的優點是允許您讀取數據(不阻塞其它事務)并在以后更新數據,同時確保自從上次讀取數據后數據沒有被更改。
XLOCK 使用排它鎖并一直保持到由語句處理的所有數據上的事務結束時。可以使用 PAGLOCK 或 TABLOCK 指定該鎖,這種情況下排它鎖適用于適當級別的粒度。
sqlserver 排他鎖鎖定某行怎么寫
鎖一個表的某一行
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SELECT * FROM table ROWLOCK WHERE id = 1實例:
--排它鎖
--新建兩個連接
--在第一個連接中執行以下語句
begin tran
update table1
set A='aa'
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran
--在第二個連接中執行以下語句
begin tran
select * from table1
where B='b2'
commit tran
--若同時執行上述兩個語句,則select查詢必須等待update執行完畢才能執行即要等待30秒
關于"鎖"的唯美句子有哪些
1、“同心鎖!”是永結同心,白頭偕老的象征。
信手拿起幾把鎖仔細的觀察,發現那些鎖的形狀各式各樣大小不一。有的是比較古老的那種“永固瑣”,仿佛經過日曬雨淋,已經變的銹跡斑斑,隱約可以看見黑色的鎖面上刻著兩個人的名字和日期。
2、時間才是檢驗愛情的試金石,祈盼能鎖住兩顆心的同心鎖,在一對戀人平淡歲月里的是是非非面前,真的顯得太過無力。海誓山盟謝幕之后,彼此間的信任、欣賞、理解、關愛,才是讓兩人牽手走進圍城,走到人生盡頭的愛情之鎖。
遺憾的是,此時的他們,很可能早已不再是當初的“羅密歐”和“朱麗葉”,取而代之的,往往只是一對平平凡凡的飲食男女。3、人們常說一把鑰匙開一把鎖,而同心鎖是沒有鎖眼的。
那是希望我們的愛情無懈可擊!買一把同心鎖,與自己心儀的女孩鄭重其實的刻上自己的名字和當天的日期,然后幸福地將它鎖在紅山塔下,那是一件多麼令人感到浪漫的事情啊!而從那一刻起,紅色的小塔也就成為我們愛情的見證者!并且在心中許下一個美麗的心愿:無論遇到多少千難萬險我們的愛情都會像那同心鎖一樣堅不可摧! 那一刻是浪漫的,也是神圣而莊嚴的!當同心鎖鎖上的一瞬間,也就許下了你對她(他)莊嚴的承諾!4、我不知道為什么人們會選擇這樣的地方來掛上連心鎖,把一對刻有雙方名字的鎖套起來,牢牢地鎖在懸崖邊的鐵鏈上,然后把兩把鑰匙高高地拋向前面的萬丈幽谷,那份決絕,那份虔誠,仿佛在進行某種儀式。鎖永遠地鎖上了,鑰匙再也不能找到,刻有兩人名字的鎖,就永遠地留在了黃山,兩個人的愛情,有天地作證,有日月為伴,預示著經久不衰,此愛綿綿。
5、聽說過一個美麗的傳說,相愛的念人在一個充滿靈氣的地方,結有一把刻有雙方姓名的同心鎖,便可以心心相犀,相愛到老,這是一個美麗的傳說,更是一個幸福的寓言。6、相比起來,倒是同心鎖單純一些。
希翼與自己的愛人同心永結,不管未來是風暴還是虹霓,是康莊大道還是崎嶇坎坷,一把鎖,鎖住的是異動,留下的是恩愛,何樂而不為呢?雖然,真要是沒有緣分,再大的鎖也是鎖不住姻緣,就像一張婚約也不能說明什么一樣。西方的婚禮,一對新人在牧師面前,大聲回答“我愿意”的時候,不會有誰想到,這場婚姻,有一天會風消云散。
7、夜已深,月已盡,情思滿懷,滿城滄桑,冬夜,月落心碎,憂思悵悵。傾一生守望,用三千青絲,任落紅舒卷,憑風雨飄搖,不管是寒風凄楚,還是滿目蕭疏,對于那份曾經的愛戀,生生世世永不改變。
我無法忘記,在那湖光碧玉的姻緣湖里,還有我們曾經拋下的同心鎖,在繁花盛開的季節里,你吻我的一世浪漫。如今緣盡緣散,那美麗的地老天荒早已化成鏡中月,水中花,深深的埋葬在幸福的彼岸。
8、看著身邊氣喘吁吁的攀山者,我不知道有多少是來系同心鎖的,又有多少是來開鎖的。但我相信,每一把鎖掛上去的時候,都有著一段美麗動人的愛情故事,而當初親手將它掛上去的戀人們都是真誠的。
生活會變化,正如同心鎖也會在風雨中變得斑駁,然而黃山始終將它作為一道美景珍藏著。9、緣起,我們相遇,平常的日子不再寂寞,緣升,我們相愛,清冷的黑夜不再漫長,緣落,我們相離,戀戀紅塵中彌漫思念。
緣滅,我們陌路,為你心碎也為你斷腸。我們的歲月終究成為一段回不去的時光,雖然它在某一時間曾綠草如茵,花開似錦,可是還是很快紛紛落下,猶如煙花燦爛,只是瞬間。
夜微涼,天微亮,一聲聲柔情蜜語,怎能訴盡我對你的柔情?月漸彎,情漸濃,一句句語淺情濃,怎能道盡我對你的相思?10、當愛情已死,再多把鎖都已無能為力。對于能夠將愛情進行到底并最終相知相伴一生的人們而言,那把同心鎖既是他們愛情的見證者,也是值得永遠珍藏的一段最美麗的回憶。
而那些錯過幸福的人,每當再度來到那紅塔之下,面對那把同心鎖時,是否還記得曾經許下的誓言。昨日的海誓山盟都以變成了今天的痛苦回憶。
事過境遷,愛情已逝,同心鎖依舊!海未枯、石未爛、無奈,樂土已成傷心地!11、我倆共享同心鎖,兩顆魂匙駢舞著,旋桌孔,情竇伊開,婷婷裊裊,饑珠皎蕊盈馨序,顫巍巍,秀朗韌逸。酣吟契語:春來了,春來了!大千世界,滿目皆綠,滿目皆綠,夢遙琴瑟,垠莽無際。
。12、他們走了,我倆還在。
只要山還在,水還在,春雨冬雪還會來,我們就在。他們走了,我倆還在。
我倆見證了他們,也擁有了彼此。他們走了,可刻下的字還在,我身上:海枯石爛,她身上:永結同心。
13、同心鎖上面的日期很久遠,好像是十幾年前刻上的;而有的鎖樣子很奇特,形狀是心型的,有單心和雙心兩種。在那金黃色的鎖面上像填簡歷似的寫著姓名和日期并專門留好空位等待著一對有情人將名字刻在上面;還有的是將兩把鎖緊鎖在一起,好象一只只美麗的金色蝴蝶安靜的停歇在紅塔下的金屬護欄上。
14、不緊不慢地在生態走廊散步,經過一排作為護欄,有近一米多高,大小相仿的石頭時,突然發現幾根固定它們的鐵鏈上,懸掛著一串串環環相扣的同心鎖。一直只知道黃山有同心鎖這道獨特的風景,沒曾想還能在小鎮見到代表戀人相依相偎,永結同心。
兄弟,幫個忙..鎖的分類..
1. 按用戶與系統劃分,可以分為自動鎖與顯示鎖
a) 自動鎖:
當進行一項數據庫操作時,缺省情況下,系統自動為此數據庫操作獲得所有有必要的鎖。
b) 顯示鎖:
某些情況下,需要用戶顯示的鎖定數據庫操作要用到的數據,才能使數據庫操作執行得更好,顯示鎖是用戶為數據庫對象設定的。
2. 按鎖級別劃分,可分為共享鎖與排它鎖
a) 共享鎖:
共享鎖使一個事務對特定數據庫資源進行共享訪問——另一事務也可對此資源進行訪問或獲得相同共享鎖。共享鎖為事務提供高并發性,但如拙劣的事務設計+共享鎖容易造成死鎖或數據更新丟失。
b) 排它鎖:
事務設置排它鎖后,該事務單獨獲得此資源,另一事務不能在此事務提交之前獲得相同對象的共享鎖或排它鎖。
3. 按操作劃分,可分為dml鎖、ddl鎖
a) dml鎖又可以分為,行鎖、表鎖、死鎖
i. 行鎖:
當事務執行數據庫插入、更新、刪除操作時,該事務自動獲得操作 表中操作行的排它鎖。
ii. 表級鎖:
當事務獲得行鎖后,此事務也將自動獲得該行的表鎖(共享鎖) 以防止其它事務進行ddl語句影響記錄行的更新。事務也可以在進行過程中獲得共享鎖或排它鎖,只有當事務顯示使用lock table語 句顯示的定義一個排它鎖時,事務才會獲得表上的排它鎖 也可使用lock table顯示的定義一個表級的共享鎖(lock table具體用法請參考相關文檔)。
iii. 死鎖:
當兩個事務需要一組有沖突的鎖,而不能將事務繼續下去的話,就出現死鎖。
如事務1在表a行記錄#3中有一排它鎖,并等待事務2在表a中記錄#4 中排它鎖的釋放,而事務2在表a記錄行#4中有一排它鎖,并等待事務 1在表a中記錄#3中排它鎖的釋放,事務1與事務2彼此等待,因此就造成了死鎖。死鎖一般是因拙劣的事務設計而產生。死鎖只能使用sql下:alter system kill session ' sid serial#' ;或者使用相關操作系統kill進程的命令,如unix下kill -9 sid 或者 使用其它工具殺掉死鎖進程。
b) ddl鎖又可以分為:排它ddl鎖、共享ddl鎖、分析鎖
i. 排它ddl鎖:
創建、修改、刪除一個數據庫對象的ddl語句獲得操作對象的 排它鎖。
如使用alter table語句時,為了維護數據的完成性、一致性、合法性,該事務獲得一排它ddl鎖。
ii. 共享ddl鎖:
需在數據庫對象之間建立相互依賴關系的ddl語句通常需共享獲得ddl鎖。
如創建一個包,該包中的過程與函數引用了不同的數據庫表,當編譯此包時,該事務就獲得了引用表的共享ddl鎖。
iii. 分析鎖:
oracle使用共享池存儲分析與優化過的sql語句及pl/sql程序,使運行相同語句的應用速度更快。一個在共享池中緩存的對象獲得它所引用數據庫對象的分析鎖。分析鎖是一種獨特的ddl鎖類型,oracle使用它追蹤共享池對象及它所引用數據庫對象之間的依賴關系。當一個事務修改或刪除了共享池持有分析鎖的數據庫對象時,oracle使共享池中的對象作廢,下次在引用這條sql/plsql語 句時,oracle重新分析編譯此語句。