精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何SQL Server中準(zhǔn)確的獲得標(biāo)識值

數(shù)據(jù)庫 SQL Server 數(shù)據(jù)庫運(yùn)維
本文向您介紹如何在SQL Server中準(zhǔn)確的獲得標(biāo)識值,在SQL Server中,有三種不同的函數(shù)可以幫助我們達(dá)到目的。

SQL Server有三種不同的函數(shù)可以用來獲得含有標(biāo)識列的表里最后生成的標(biāo)識值:

  1. @@IDENTITY   
  2. SCOPE_IDENTITY()   
  3. IDENT_CURRENT('數(shù)據(jù)表名'

以上三個函數(shù)雖然都可以返回?cái)?shù)據(jù)庫引擎最后生成插入標(biāo)識列的值,但是根據(jù)插入行的來源(例如:存儲過程或觸發(fā)器)以及插入該行的連接不同,這三個函數(shù)在功能上也有所不同。

@@IDENTITY函數(shù)可以返回所有范圍內(nèi)當(dāng)前連接插入最后所生成的標(biāo)識值(包括任何調(diào)用的存儲過程和觸發(fā)器)。這個函數(shù)不止可以適用于表。函數(shù)返回的值是最后表插入行生成的標(biāo)識值。

SCOPE_IDENTITY()函數(shù)跟上一個函數(shù)幾乎是一摸一樣的,不同的地方:即前者返回的值只限于當(dāng)前范圍(即執(zhí)行中的存儲過程)。

最后是IDENT_CURRENT函數(shù),它可以用于所有范圍和所有連接,獲得最后生成的表標(biāo)識值。跟前面兩個函數(shù)不同的是,這個函數(shù)只用于表,并且使用[數(shù)據(jù)表名]作為一個參數(shù)。

我們可以舉實(shí)例來演示上述函數(shù)是如何運(yùn)作的。

首先,我們創(chuàng)建兩個簡單的例表:一個代表客戶表,一個代表審計(jì)表。創(chuàng)建審計(jì)表的目的是為了跟蹤數(shù)據(jù)庫里插入和刪除信息的所有記錄。

以下是引用片段:

  1. CREATE TABLE dbo.customer   
  2. (customerid INT IDENTITY(1,1) PRIMARY KEY)   
  3. GO   
  4. CREATE TABLE dbo.auditlog   
  5. (auditlogid INT IDENTITY(1,1) PRIMARY KEY,   
  6. customerid INTaction CHAR(1),   
  7. changedate datetime DEFAULT GETDATE())   
  8. GO 

然后,我們還要創(chuàng)建一個存儲過程和一個輔助觸發(fā)器,這個存儲過程將在數(shù)據(jù)庫表里插入新的客戶行,并返回生成的標(biāo)識值,而觸發(fā)器則會向?qū)徲?jì)表插入行:

以下是引用片段:

  1. CREATE PROCEDURE dbo.p_InsertCustomer @customerid INT output   
  2. AS   
  3. SET nocount ON   
  4. INSERT INTO dbo.customer DEFAULT VALUES   
  5. SELECT @customerid = @@identity   
  6. GO   
  7. CREATE TRIGGER dbo.tr_customer_log ON dbo.customer   
  8. FOR INSERTDELETE   
  9. AS   
  10. IF EXISTS (SELECT 'x' FROM inserted)   
  11. INSERT INTO dbo.auditlog (customerid, action)   
  12. SELECT customerid, 'I'   
  13. FROM inserted   
  14. ELSE   
  15. IF EXISTS (SELECT 'x' FROM deleted)   
  16. INSERT INTO dbo.auditlog (customerid, action)   
  17. SELECT customerid, 'D'   
  18. FROM deleted   
  19. GO 

現(xiàn)在我們可以執(zhí)行程序,創(chuàng)建客戶表的第一行了,以下是引用片段:

  1. DECLARE @customerid INT   
  2. EXEC dbo.p_InsertCustomer @customerid output   
  3. SELECT @customerid AS customerid 
#p#

執(zhí)行后返回了我們需要的第一個客戶的值,并記錄了插入審計(jì)表的條目。到目前為止,數(shù)據(jù)顯示沒有任何問題。

假設(shè)由于先前溝通出現(xiàn)了偏差,一個客戶服務(wù)代表現(xiàn)在需要從數(shù)據(jù)庫里刪除掉這個新增的客戶。我們現(xiàn)在就來把新插入的客戶行刪除掉:

以下是引用片段:

  1. DELETE FROM dbo.customer WHERE customerid = 1 

現(xiàn)在,客戶工作表為空表,而審計(jì)工作表里則有兩行——第一行是記錄第一次插入行,第二行是記錄刪除客戶記錄。

現(xiàn)在我們再往數(shù)據(jù)庫里增加第二個客戶信息并檢測一下獲得的標(biāo)識值:

以下是引用片段:

  1. DECLARE @customerid INT   
  2. EXEC dbo.p_InsertCustomer @customerid output   
  3. SELECT @customerid AS customerid 

哇!看看出現(xiàn)了什么情況!如果我們現(xiàn)在再看客戶工作表,就會發(fā)現(xiàn)雖然創(chuàng)建了客戶2,但是我們的程序返回的標(biāo)識值為3!到底出了什么問題呢?回想一下,前面講過@@IDENTITY函數(shù)的作用范圍,它會返回主程序調(diào)用的任何存儲過程或觸動任何觸發(fā)器最后生成的標(biāo)識值,取決于哪一個在函數(shù)被調(diào)用前最后生成標(biāo)識值。在我們的例子里,初始范圍是p_InsertCustomer,然后是觸發(fā)器用來記錄插入條目的tr_customer_log。因此我們返回獲得的標(biāo)識值是審計(jì)工作表里觸發(fā)器插入生成的標(biāo)識值,而不是我們想要的客戶工作表里的生成的標(biāo)識值。

在SQL Server 2000之前的版本,@@IDENTITY函數(shù)是獲得標(biāo)識值的唯一方法。由于會出現(xiàn)這樣的存儲過程/觸發(fā)器問題,SQL Server開發(fā)團(tuán)隊(duì)在SQL Server 2000中引入了 SCOPE_IDENTITY()和IDENT_CURRENT這兩個函數(shù)來解決這個問題。所以在舊的SQL Server版本里,要解決這個問題比較麻煩。如果是SQL Server6.5版本,我建議可以去掉標(biāo)識列,然后創(chuàng)建一個可以包含下一個需要使用的值的輔助表,可以達(dá)到標(biāo)識列的作用效果。不過這個辦法也不是什么高明的辦法。

現(xiàn)在我們來修改一下存儲過程來使用SCOPE_IDENTITY()函數(shù),并重新執(zhí)行程序來添加第三個客戶條目:

以下是引用片段:

  1. ALTER PROCEDURE dbo.p_InsertCustomer @customerid INT output   
  2. AS   
  3. SET nocount ON   
  4. INSERT INTO dbo.customer DEFAULT VALUES   
  5. SELECT @customerid = SCOPE_IDENTITY()   
  6. GO   
  7. DECLARE @customerid INT   
  8. EXEC dbo.p_InsertCustomer @customerid output   
  9. SELECT @customerid AS customerid 

我們返回的標(biāo)識值還是3,不過這次我們獲得的標(biāo)識值是正確的,因?yàn)槲覀兲砑恿说谌齻€客戶條目。如果我們檢查一下審計(jì)工作表,就會發(fā)現(xiàn)里面已經(jīng)有第四個條目記錄新插入的客戶記錄。由于函數(shù)SCOPE_IDENTITY()只作用于當(dāng)前范圍,只返回當(dāng)前執(zhí)行程序的值,這樣就避免了發(fā)生剛才那樣的問題。

前面講過,函數(shù)@@IDENTITY和函數(shù)SCOPE_IDENTITY()不止用于表,不像函數(shù)IDENT_CURRENT那樣可以用表作為參數(shù)。使用@@IDENTITY和SCOPE_IDENTITY()這兩個函數(shù)的話在設(shè)置代碼時需要加倍小心,才能夠從所需要的表里獲得正確的標(biāo)識值。從表面上來看,放棄這兩個函數(shù),只使用函數(shù)IDENT_CURRENT并指定表是更安全的辦法。這樣可以避免出現(xiàn)獲得錯誤標(biāo)識值的情況,對吧?記得先前說過函數(shù)IDENT_CURRENT不僅會跨范圍,而且它還會跨連接。也就是說,使用這個函數(shù)生成的值不僅僅限于你的連接所執(zhí)行的程序,它的涵蓋范圍還包括整個數(shù)據(jù)庫所有的連接。因此,即使是在規(guī)模較小的OLTP環(huán)境里,它也會出現(xiàn)不能準(zhǔn)確返回所需值的問題。這樣就可能發(fā)生類似前面@@IDENTITY函數(shù)/觸發(fā)器的數(shù)據(jù)損壞問題。

我的建議是函數(shù)SCOPE_IDENTITY()是三個函數(shù)里最安全的函數(shù),應(yīng)該設(shè)置為默認(rèn)函數(shù)。使用這個函數(shù),你可以放心地添加觸發(fā)器和次存儲過程,無需擔(dān)心意外損壞數(shù)據(jù)。而另外兩個函數(shù)可以保留應(yīng)付特殊的情況,當(dāng)遇到需要使用這兩個函數(shù)的特殊情況時,建議記錄它們的使用情況并進(jìn)行測試。

小技巧

Sql Server 判斷表是存在標(biāo)識列

If Exists(Select * from SysColumns Where ID=OBJECT_ID(N'TEST1') And COLUMNPROPERTY(ID,Name,'IsIdentity')=1)

Print N'有自增列'

Else

Print N'沒有自增列'

Sql Server 顯示當(dāng)前數(shù)據(jù)庫包含自增列的表

Select b.name,a.* from SysColumns a,sysobjects b Where a.id=b.id and COLUMNPROPERTY(a.ID,a.Name,'IsIdentity')=1

SQL SERVER自增張字段復(fù)位方法:

SQLSERVER 復(fù)位:

Truncate table Ashare_CJHB

Dbcc checkident (Ashare_CJHB,RESEED,0)

【編輯推薦】

  1. 在T-SQL中使用臨時表的注意事項(xiàng)(1)
  2. SQL Server數(shù)據(jù)庫管理常用的SQL和T-SQL語句(1)
  3. 用T-SQL操作面試SQL Server開發(fā)人員(1)
  4. 用代碼刷新ODBC鏈接SQL Server表
  5. T-SQL實(shí)用例句
責(zé)任編輯:冰荷 來源: ctocio
相關(guān)推薦

2010-10-20 10:04:36

sql server自

2010-07-16 09:17:07

SQL Server

2010-07-26 17:36:44

SQL Server數(shù)

2010-10-19 17:09:27

sql server標(biāo)

2010-09-03 10:52:10

SQL刪除

2010-09-25 10:41:34

SQL SERVER主

2010-11-11 11:56:39

SQL Server標(biāo)

2010-06-17 09:42:28

SQL Server智

2016-10-09 20:08:58

2010-07-15 10:37:15

SQL Server默

2010-11-09 09:43:20

SQL Server查

2011-05-10 16:34:03

MasterSQL Server

2010-09-06 17:11:14

SQL函數(shù)

2010-11-10 15:23:55

SQL SERVER

2010-07-22 10:45:45

SQL Server數(shù)

2011-04-02 11:14:20

SQL Server數(shù)XML

2010-09-06 13:41:42

sql server語句

2009-04-20 15:54:04

SQL Server重復(fù)行

2011-04-06 16:25:47

SQL Server

2015-07-20 17:05:38

SQL ServerNULL值
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

国产福利视频在线播放| 国产成人欧美在线观看| 一级黄色大片免费看| 大菠萝精品导航| 国产色一区二区| 亚洲综合社区网| 99久热在线精品996热是什么| av影片在线一区| 日韩一区二区免费视频| 国产精品亚洲αv天堂无码| 一广人看www在线观看免费视频| 国产宾馆实践打屁股91| 国产精品九九九| 国产午夜激情视频| 久久精品国内一区二区三区水蜜桃| 亚洲成人久久久| 国内外成人免费在线视频| 暧暧视频在线免费观看| 国产精品久久久久精k8| 久久视频在线观看中文字幕| 国产草草影院ccyycom| 久久久亚洲人| 亚州精品天堂中文字幕| 精品国产精品国产精品| 国产精品美女久久久久久不卡| 精品久久人人做人人爽| 欧美在线aaa| 韩日成人影院| 天天影视网天天综合色在线播放 | 久久久久久久久久久久91| eeuss鲁一区二区三区| 18欧美乱大交hd1984| 日本一区视频在线播放| 性生交大片免费看女人按摩| 久久99精品久久久久婷婷| 国产成+人+综合+亚洲欧洲| wwwxxx亚洲| 亚洲成人资源| 欧美丰满少妇xxxxx| 91香蕉一区二区三区在线观看| 精品久久久久久久久久久aⅴ| 日韩国产精品视频| 久久久无码人妻精品无码| 精品国产黄a∨片高清在线| 日本韩国一区二区| 999香蕉视频| 成人在线爆射| 在线观看国产日韩| 精品久久久噜噜噜噜久久图片 | 久久精品a一级国产免视看成人 | 男人的午夜天堂| 狠狠色丁香婷婷综合影院| 亚洲欧美精品一区| 亚洲精品成人无码| 中国黄色一级视频| 国产尤物精品| 久久久久久久久久久人体| 欧美成人免费看| 亚洲二区视频| 欧美亚洲国产视频| 依依成人综合网| 久久性天堂网| 国产精品在线看| 国产乱码久久久| 国产成人在线视频网站| 亚洲一区二区三区乱码aⅴ| 永久免费看mv网站入口亚洲| 好吊日免费视频| 亚洲大片精品免费| 亚洲一级黄色av| 蜜桃av免费在线观看| 天天综合网91| 欧美激情区在线播放| 日韩av无码中文字幕| 国产亚洲综合精品| 国产精品免费福利| 国产色片在线观看| 不卡一区在线观看| 区一区二区三区中文字幕| 亚洲1卡2卡3卡4卡乱码精品| 亚洲精品老司机| 国产最新免费视频| 日本欧美韩国| 日韩欧美资源站| 国产熟妇搡bbbb搡bbbb| 色一区二区三区四区| 欧美高清第一页| 天天综合天天干| 九色综合国产一区二区三区| 国产另类自拍| 福利成人在线观看| 亚洲制服丝袜一区| 亚欧在线免费观看| 99re热精品视频| 在线观看中文字幕亚洲| 久久久久亚洲av无码专区| 亚洲欧美日韩国产一区| 成人网欧美在线视频| 天天躁日日躁狠狠躁喷水| 国产精品久久久久三级| 免费 成 人 黄 色| 91精品麻豆| 亚洲毛片一区二区| 久久久久久久久97| 免费人成精品欧美精品| 国外成人在线视频网站| 老司机午夜在线| 黑人巨大精品欧美一区二区| 日本一本在线视频| 激情五月综合| 午夜精品国产精品大乳美女| 97超碰人人模人人人爽人人爱| 99精品欧美一区二区三区小说| 亚洲欧美日韩综合一区| wwww亚洲| 日韩一二三区视频| eeuss中文字幕| 亚洲免费中文| 国产日韩一区二区三区| fc2ppv国产精品久久| 欧美中文字幕亚洲一区二区va在线| 911亚洲精选| 97精品国产| 国产精品久久77777| 头脑特工队2免费完整版在线观看| 亚洲精品五月天| av亚洲天堂网| 波多野结衣的一区二区三区| 日本午夜在线亚洲.国产| 人妻一区二区三区四区| 一区二区在线观看视频在线观看| www.cao超碰| 成人免费a**址| 国产成人精彩在线视频九色| 三级在线视频| 日韩欧美亚洲范冰冰与中字| 在线观看国产三级| 亚洲一区二区三区高清不卡| 国产三区精品| 美女av在线免费看| 亚洲国产精品va在线观看黑人| 国产性一乱一性一伧一色| 国产精品影音先锋| 国产欧美123| 日韩最新av| www日韩中文字幕在线看| 久久精品一二区| 久久亚区不卡日本| av免费在线播放网站| 欧美猛男做受videos| 国产成人avxxxxx在线看| 国产高清视频在线| 精品视频一区三区九区| 视频国产一区二区| 国产精品一级片| 成人小视频在线观看免费| 综合中文字幕| 91地址最新发布| 免费理论片在线观看播放老| 在线亚洲精品福利网址导航| jizz中文字幕| 国产一区二区视频在线播放| 国内精品国产三级国产99| 亚洲精品高潮| 26uuu国产精品视频| 韩日视频在线| 7777精品伊人久久久大香线蕉 | 精品美女视频| 国产精品久久婷婷六月丁香| 好了av在线| 亚洲国产日韩欧美在线图片| 国产成人精品777777| 日韩毛片一二三区| 国产吃瓜黑料一区二区| 午夜在线播放视频欧美| 亚洲伊人婷婷| 91精品国产自产在线丝袜啪| 日本国产精品视频| 黄色av电影在线观看| 亚洲国产女人aaa毛片在线| 久久的精品视频| 一级一片免费看| 综合久久国产九一剧情麻豆| 9.1在线观看免费| 男女男精品网站| 很污的网站在线观看| 狠狠色丁香婷婷综合影院| 亚洲一区二区在线| 亚洲天堂资源| 久久影院资源网| 青青草免费在线| 欧美一区三区四区| 五月天激情国产综合婷婷婷| 最近中文字幕一区二区三区| 97人妻天天摸天天爽天天| 久久精品99国产精品日本| 免费看欧美黑人毛片| 欧美日韩中文一区二区| av色综合网| 国产精品麻豆成人av电影艾秋| 久久久久亚洲精品| 91精品国产91久久久久游泳池| 欧美不卡在线视频| 中文字幕在线观看国产| 香港成人在线视频| 翔田千里88av中文字幕| 国产婷婷色一区二区三区在线| 色欲无码人妻久久精品| 青青草一区二区三区| 国产特级黄色大片| 国模 一区 二区 三区| 亚洲午夜精品久久久久久浪潮| 亚洲精品一级二级三级| 91视频99| 精品中文视频| 国产在线高清精品| 国模一区二区| 日本一欧美一欧美一亚洲视频| 成人av影院在线观看| 久久久成人精品视频| jyzzz在线观看视频| 亚洲欧洲在线播放| 天堂中文在线视频| 日韩av在线免播放器| 亚洲乱码国产乱码精品精软件| 欧美日韩免费在线视频| 这里只有久久精品视频| 一本到不卡免费一区二区| 国产69精品久久久久久久久久| 一区二区三区四区精品在线视频| 成人免费毛片xxx| 国产精品久久久久久亚洲伦| 夫妇交换中文字幕| 国产三级久久久| 亚洲综合欧美综合| 国产日韩欧美高清| 国产成人一区二区在线观看| 国产午夜精品一区二区三区视频 | 中文成人无字幕乱码精品区| 国产精品色网| 男女视频网站在线观看| 亚洲小说欧美另类社区| 国产精品久久久久久久乖乖| 激情欧美一区二区三区| 大西瓜av在线| 在线观看的日韩av| 给我免费播放片在线观看| 亚洲韩日在线| 波多野结衣家庭教师在线播放| 国产亚洲欧洲| 可以在线看的黄色网址| 奇米精品一区二区三区在线观看| 日韩欧美在线免费观看视频| 老色鬼精品视频在线观看播放| 污片在线免费看| 精品亚洲成a人| 台湾佬美性中文| 99精品视频一区二区三区| 欧洲女同同性吃奶| 国产精品午夜久久| 欧美老熟妇一区二区三区| 一区二区三区美女| 可以免费看的av毛片| 欧美视频在线播放| 国产又粗又猛又黄又爽无遮挡| 日韩欧美激情一区| 日产精品久久久久久久性色| 尤物精品国产第一福利三区 | 久久久久久久91| 成人在线黄色电影| 国产精品日韩欧美大师| 亚洲视频一起| 久久综合给合久久狠狠色| 精品视频国产| 国产911在线观看| 亚洲在线观看| 九九九九九九九九| 成人黄色av网站在线| 最新中文字幕av| 亚洲一级二级三级在线免费观看| 好吊色在线视频| 91精品国产综合久久婷婷香蕉| 蜜桃视频在线观看www| 亚洲性无码av在线| 欧美bbbxxxxx| 国产精品久久久久久久久久东京 | 中文字幕成人| 国外成人免费视频| 91久久久精品国产| 成人一级片网站| 国产精品一区二区久久精品爱涩| 魔女鞋交玉足榨精调教| 亚洲天堂精品在线观看| 精品久久久久久久久久久久久久久久 | www.好吊操| 久久国产精品99久久久久久老狼| a级一a一级在线观看| 亚洲欧洲日产国码二区| 亚洲熟女综合色一区二区三区| 91精品国产综合久久精品| 经典三级在线| 97国产精品视频| 高清不卡一区| 午夜精品福利一区二区| 99在线精品视频在线观看| 激情图片中文字幕| 国产欧美在线观看一区| 天天爽夜夜爽夜夜爽精品| 欧美一区二区在线免费观看| 国产高清视频在线播放| 秋霞av国产精品一区| 韩国女主播一区二区三区| 潘金莲一级淫片aaaaa免费看| 日韩不卡在线观看日韩不卡视频| 国产精品无码电影| 亚洲一区中文在线| 99久久国产热无码精品免费| 在线电影中文日韩| 国产精品扒开腿做爽爽爽视频软件| 国产在线精品一区二区三区| 欧美在线网站| 57pao国产成永久免费视频| 国产日韩精品一区二区三区在线| 国产精品免费精品一区| 亚洲第一精品夜夜躁人人躁 | 香蕉久久网站| 免费看涩涩视频| 欧美国产精品专区| 无码人妻一区二区三区免费| 日韩黄色高清视频| 美女网站在线看| 狠狠色综合色区| 日韩午夜在线| 亚洲天堂资源在线| 天天综合网 天天综合色| av女名字大全列表| 91av在线免费观看| 奇米777国产一区国产二区| www精品久久| 91色视频在线| 亚洲熟妇无码乱子av电影| 亚洲欧美中文日韩在线| 久久电影tv| 日韩欧美一区二区三区四区五区| 日韩av不卡在线观看| 亚洲高潮女人毛茸茸| 欧美日韩一级黄| 毛片在线看片| 999热视频| 国产欧美精品久久| 最近中文字幕在线mv视频在线 | av男人天堂网| 欧美激情视频一区二区三区不卡| 2021年精品国产福利在线| 少妇人妻无码专区视频| 91麻豆蜜桃一区二区三区| 无码人妻av免费一区二区三区| 亚洲最新在线视频| 日韩在线激情| 真实国产乱子伦对白视频| 99这里只有久久精品视频| 日日夜夜操视频| 日韩亚洲欧美中文高清在线| 日韩精品视频中文字幕| 无码专区aaaaaa免费视频| 国产亚洲一区二区三区| 国产一区二区在线视频聊天| 欧美国产在线视频| 午夜精品福利影院| 天天综合网久久| 亚洲一区二区不卡免费| 能在线看的av| 成人网在线免费看| 99这里有精品| 中国美女黄色一级片| 精品国内片67194| 桃花岛成人影院| 日本精品福利视频| 久久久久久久久97黄色工厂| 亚洲在线视频播放| 91超碰caoporn97人人| 五月天久久网站| 激情综合丁香五月| 欧美精品国产精品| 国产99在线| eeuss中文| 久久综合九色综合97婷婷女人 | jizz性欧美23| 网站一区二区三区| 性欧美大战久久久久久久久| av在线电影观看| 国产福利不卡| 美国毛片一区二区三区| 日本va欧美va国产激情| 精品国偷自产在线视频| 丝袜久久网站| 香蕉视频1024| 538在线一区二区精品国产| 69久成人做爰电影| 久久久久久久9|