婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > @@IDENTITY與SCOPE_IDENTITY()

@@IDENTITY與SCOPE_IDENTITY()

熱門標(biāo)簽:高德地圖標(biāo)注商家在哪 江西南昌百應(yīng)電話機(jī)器人 隨州營銷電話機(jī)器人怎么樣 400電話申請怎么看 杭州400電話如何申請的 天音通信電話機(jī)器人 400電話從哪里申請濱州 hbuilder地圖標(biāo)注 機(jī)器人電話機(jī)創(chuàng)意繪畫

在一條 INSERT、SELECT INTO 或大容量復(fù)制語句完成后,@@IDENTITY 中包含語句生成的最后一個標(biāo)識值。如果語句未影響任何包含標(biāo)識列的表,則 @@IDENTITY 返回 NULL。如果插入了多個行,生成了多個標(biāo)識值,則 @@IDENTITY 將返回最后生成的標(biāo)識值。如果語句觸發(fā)了一個或多個觸發(fā)器,該觸發(fā)器又執(zhí)行了生成標(biāo)識值的插入操作,那么,在語句執(zhí)行后立即調(diào)用 @@IDENTITY 將返回觸發(fā)器生成的最后一個標(biāo)識值。如果對包含標(biāo)識列的表執(zhí)行插入操作后觸發(fā)了觸發(fā)器,并且觸發(fā)器對另一個沒有標(biāo)識列的表執(zhí)行了插入操作,則 @@IDENTITY 將返回第一次插入的標(biāo)識值。出現(xiàn) INSERT 或 SELECT INTO 語句失敗或大容量復(fù)制失敗,或者事務(wù)被回滾的情況時,@@IDENTITY 值不會恢復(fù)為以前的設(shè)置。

      如果語句和事務(wù)失敗,它們會更改表的當(dāng)前標(biāo)識,從而使標(biāo)識列中的值出現(xiàn)不連貫現(xiàn)象。即使未提交試圖向表中插入值的事務(wù),也永遠(yuǎn)無法回滾標(biāo)識值。例如,如果因 IGNORE_DUP_KEY 沖突而導(dǎo)致 INSERT 語句失敗,表的當(dāng)前標(biāo)識值仍然會增加。

     @@IDENTITY、SCOPE_IDENTITY 和 IDENT_CURRENT 是相似的函數(shù),因為他們都返回插入到表的 IDENTITY 列的最后一個值。

     @@IDENTITY 和 SCOPE_IDENTITY 可以返回當(dāng)前會話中的所有表中生成的最后一個標(biāo)識值。但是,SCOPE_IDENTITY 只在當(dāng)前作用域內(nèi)返回值,而 @@IDENTITY 不限于特定的作用域。

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

     @@IDENTITY 函數(shù)的作用域是執(zhí)行該函數(shù)的本地服務(wù)器上的當(dāng)前會話。此函數(shù)不能應(yīng)用于遠(yuǎn)程或鏈接服務(wù)器。若要獲得其他服務(wù)器上的標(biāo)識值,請在遠(yuǎn)程服務(wù)器或鏈接服務(wù)器上執(zhí)行存儲過程,并使(在遠(yuǎn)程或鏈接服務(wù)器的環(huán)境中執(zhí)行的)該存儲過程收集標(biāo)識值,并將其返回本地服務(wù)器上的發(fā)出調(diào)用的連接。

     以下示例向包含標(biāo)識列 (LocationID) 的表中插入一行,并使用 @@IDENTITY 顯示新行中使用的標(biāo)識值:

復(fù)制代碼 代碼如下:

USE AdventureWorks;
GO
--Display the value of LocationID in the last row in the table.
SELECT MAX(LocationID) FROM Production.Location;
GO
INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate)
VALUES ('Damaged Goods', 5, 2.5, GETDATE());
GO
SELECT @@IDENTITY AS 'Identity';
GO
--Display the value of LocationID of the newly inserted row.
SELECT MAX(LocationID) FROM Production.Location;
GO

補(bǔ)充:
  我們要慎用@@IDENTITY,原因是 @@IDENTITY 它總是獲取最后一條變更數(shù)據(jù)的自增字段的值,
 而忽略了進(jìn)行變更操作所在的范圍約束。比如,我有表 A 和表 B 兩個表,現(xiàn)在我在表 A 上定義了一個Insert觸發(fā)器,當(dāng)在表 A 中插入一條數(shù)據(jù)時,自動在表 B 也插入一條數(shù)據(jù)。此時,大家注意,有兩個原子操作:在A中插入一條數(shù)據(jù), 接著在B中隨后插入一條數(shù)據(jù)。

   現(xiàn)在我們想下,假設(shè)上面表 A 和表 B 都有IDENTITY自增域,那么我們在表 A 插入一條數(shù)據(jù)后,使用了 SELECT @@IDENTITY 輸出時,輸出的到底是 A 還是 B 的自增域的值呢?  答案很明顯,是誰最后插入就輸出誰,那么就是 B 了。于是,我本意是想得到 A 的自增域值,結(jié)果得到了 B 的自增域值,一只 BUG 隨之誕生,搞不好還會影響到整個系統(tǒng)數(shù)據(jù)的混亂。

   因此,對于這種情況,建議大家慎用 @@IDENTITY,而盡量采用 SCOPE_IDENTITY()函數(shù)替換之。SCOPE_IDENTITY() 也是得到最后一條自增域的值,但是它是僅限在一個操作范圍之內(nèi),而不@@IDENTITY 是取全局操作的最后一步操作所產(chǎn)生的自增域的值的。

您可能感興趣的文章:
  • sql添加數(shù)據(jù)后返回受影響行數(shù)據(jù)
  • sqlserver中向表中插入多行數(shù)據(jù)的insert語句
  • 用JS獲得表格當(dāng)前行數(shù)的代碼
  • 向數(shù)據(jù)庫中插入數(shù)據(jù)并返回當(dāng)前插入的行數(shù)及全局變量@@IDENTITY應(yīng)用

標(biāo)簽:葫蘆島 鶴崗 保定 石嘴山 沈陽 招商 常德 昆明

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《@@IDENTITY與SCOPE_IDENTITY()》,本文關(guān)鍵詞  @@IDENTITY,與,SCOPE,IDENTITY,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《@@IDENTITY與SCOPE_IDENTITY()》相關(guān)的同類信息!
  • 本頁收集關(guān)于@@IDENTITY與SCOPE_IDENTITY()的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 武清区| 永宁县| 承德县| 徐汇区| 沧州市| 迁安市| 从化市| 乐亭县| 浦江县| 黎川县| 东莞市| 滕州市| 高唐县| 刚察县| 乐亭县| 从化市| 红原县| 昔阳县| 垣曲县| 博乐市| 天津市| 柞水县| 西青区| 台山市| 普格县| 永福县| 抚远县| 米泉市| 璧山县| 尼木县| 贺州市| 宁武县| 烟台市| 宽城| 应城市| 平凉市| 高唐县| 吉安市| 蒙自县| 米林县| 大邑县|