国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
sql server獲取自增值的方法

這是一個(gè)比較常見(jiàn)的問(wèn)題,封建時(shí)代我們使用

Select max(id) from table;可是,這東西在并發(fā)的時(shí)候會(huì)有很大的問(wèn)題。假設(shè),A,B兩個(gè)線程同時(shí)做insert,以及select的操作。如果,按順序來(lái),那么當(dāng)然不會(huì)出問(wèn)題,可是,如果在A線程insert以后,讓出了資源,讓Binsert,然后再是A調(diào)用select,那么,查出來(lái)的ID就是Binsert以后的ID了。

當(dāng)然,這和你的事務(wù)隔離級(jí)別也有一定的關(guān)系。

SQL SERVER中,有了這方面的函數(shù)可以直接獲得。他們比較相似,分別是:SCOPE_IDENTITY、IDENT_CURRENT@@IDENTITY

IDENT_CURRENT 返回為任何會(huì)話和任何作用域中的特定表最后生成的標(biāo)識(shí)值。IDENT_CURRENT 不受作用域和會(huì)話的限制,而受限于指定的表。

@@IDENTITY 返回為當(dāng)前會(huì)話的所有作用域中的任何表最后生成的標(biāo)識(shí)值。

SCOPE_IDENTITY 返回為當(dāng)前會(huì)話和當(dāng)前作用域中的任何表最后生成的標(biāo)識(shí)值

SCOPE_IDENTITY 和 @@IDENTITY 返回在當(dāng)前會(huì)話中的任何表內(nèi)所生成的最后一個(gè)標(biāo)識(shí)值。但是,SCOPE_IDENTITY 只返回插入到當(dāng)前作用域中的值;@@IDENTITY 不受限于特定的作用域。

數(shù)據(jù)庫(kù)管理員常常會(huì)用他們自己的審核表對(duì)數(shù)據(jù)庫(kù)所做的更改進(jìn)行跟蹤。為了跟蹤,一般會(huì)依靠觸發(fā)器或者存儲(chǔ)過(guò)程。比如,現(xiàn)在A表插入一行,然后通過(guò)觸發(fā)器,在審核表插入一行,那么這種情況下,@@IDENTITY返回的是審核表的這行的自增量。因?yàn)?,它的意思是返回?dāng)前連接上所生產(chǎn)的最新標(biāo)識(shí)。

這時(shí)候就應(yīng)該使用SCOPE_IDENTITY,因?yàn)橛|發(fā)器已經(jīng)不是當(dāng)前作用域。

不過(guò)如果想先通過(guò)存儲(chǔ)過(guò)程插入一行,然后在存儲(chǔ)過(guò)程之后調(diào)用獲取這個(gè)值。那么他會(huì)返回null,因?yàn)榇鎯?chǔ)過(guò)程和查詢(xún)不在同一作用域中執(zhí)行。

另注:

  例如,有兩個(gè)表 T1 和 T2,在 T1 上定義了一個(gè) INSERT 觸發(fā)器。當(dāng)將某行插入 T1 時(shí),觸發(fā)器被激發(fā),并在 T2 中插入一行。此例說(shuō)明了兩個(gè)作用域:一個(gè)是在 T1 上的插入,另一個(gè)是作為觸發(fā)器的結(jié)果在 T2 上的插入。

 

  假設(shè) T1 和 T2 都有 IDENTITY 列,@@IDENTITY 和 SCOPE_IDENTITY 將在 T1 上的 INSERT 語(yǔ)句的最后返回不同的值。

 

 @@IDENTITY 返回插入到當(dāng)前會(huì)話中任何作用域內(nèi)的最后一個(gè) IDENTITY 列值,該值是插入 T2 中的值。

 SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值,該值是發(fā)生在相同作用域中的最后一個(gè) INSERT。如果在作用域中發(fā)生插入語(yǔ)句到標(biāo)識(shí)列之前喚醒調(diào)用 SCOPE_IDENTITY() 函數(shù),則該函數(shù)將返回 NULL 值。

 

 

 而IDENT_CURRENT('T1') 和 IDENT_CURRENT('T2') 返回的值分別是這兩個(gè)表最后自增的值。

 

 ajqc的實(shí)驗(yàn):(40條本地線程,40+40條遠(yuǎn)程線程同時(shí)并發(fā)測(cè)試,插入1200W),得出的結(jié)論是:

 1.在典型的級(jí)聯(lián)應(yīng)用中.不能用@@IDENTITY,CII850,256M SD的機(jī)器上1W多行時(shí)就會(huì)并發(fā)沖突.P42.8C,512M DDR,6000多行時(shí)就并發(fā)沖突.

 2.SCOPE_IDENTITY()是絕對(duì)可靠的,可以用在存儲(chǔ)過(guò)程中,連觸發(fā)器也不用建,沒(méi)并發(fā)沖突

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
@@IDENTITY與SCOPE_IDENTITY()
保存一個(gè)記錄到數(shù)據(jù)庫(kù)又馬上返回ID號(hào)
如何在Sql Server中準(zhǔn)確的獲得標(biāo)識(shí)值 _ 編程_數(shù)據(jù)庫(kù)_C語(yǔ)言_電腦技術(shù)_程序設(shè)計(jì)...
SELECT @@IDENTITY 用法
SCOPE_IDENTITY的用法
CREATE TRIGGER (Transact
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服