国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

對有insert觸發(fā)器表取IDENTITY值時(shí)發(fā)現(xiàn)的問題

2024-08-31 00:59:35
字體:
供稿:網(wǎng)友
問題是這樣的:
T1表上有一個INSERT的觸發(fā)器,在插入數(shù)據(jù)的時(shí)候,會自動往T2表里面插一條記錄
這樣當(dāng)我在T1表上插入新的數(shù)據(jù)時(shí),取@@IDENTITY的時(shí)候,返回的id值是T2表里面的新記錄的值

趕快查了下msdn,原來@@IDENTITY還有這么多講究:

在一條 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ù)被回滾的情況時(shí),@@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ù),因?yàn)樗麄兌挤祷夭迦氲奖淼?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)識值,請?jiān)谶h(yuǎn)程服務(wù)器或鏈接服務(wù)器上執(zhí)行存儲過程,并使(在遠(yuǎn)程或鏈接服務(wù)器的環(huán)境中執(zhí)行的)該存儲過程收集標(biāo)識值,并將其返回本地服務(wù)器上的發(fā)出調(diào)用的連接。


所以對多個表進(jìn)行操作的時(shí)候,最好用
SELECT SCOPE_IDENTITY()和SELECT IDENT_CURRENT(‘T1')方式
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇赉县| 大邑县| 于田县| 绥化市| 全南县| 庆安县| 农安县| 临湘市| 岱山县| 红河县| 丰宁| 齐河县| 方城县| 绵阳市| 贵港市| 汝阳县| 含山县| 锦州市| 汉源县| 铁岭市| 柯坪县| 界首市| 杭锦旗| 兴仁县| 山西省| 万盛区| 高雄县| 东丰县| 二连浩特市| 英德市| 江门市| 民勤县| 额尔古纳市| 克什克腾旗| 佳木斯市| 鄂尔多斯市| 闻喜县| 班玛县| 承德市| 金川县| 积石山|