日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

SQL获取刚插入的记录的自动增长列ID的值

發(fā)布時(shí)間:2025/3/20 数据库 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL获取刚插入的记录的自动增长列ID的值 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

假設(shè)表結(jié)構(gòu)如下:

CREATE TABLE TestTable

(

  id int identity,

  CreatedDate datetime

)

?

SQL2005獲得新增行的自動(dòng)增長(zhǎng)列的語(yǔ)句如下:

insert into TestTable (CreatedDate)? output? inserted.id? values (getdate())

?

output 是sql server2005的新特性,可以從數(shù)據(jù)修改語(yǔ)句中返回輸出,可以看作是“返回結(jié)果的DML”

2005之后 Insert,Delete,Update語(yǔ)句 均支持Output語(yǔ)句。

在Output語(yǔ)句中可以引用inserted和deleted。使用方法同觸發(fā)器類(lèi)似。

該方法最大弊端就是需要指定主鍵。output Inserted.要返回的值。

?

帶有output的insert語(yǔ)句.

?

@@identity只能返回當(dāng)前會(huì)話(huà)最后生產(chǎn)的標(biāo)識(shí)列.? 如果一次性插入多條語(yǔ)句的話(huà). 需要返回這些自動(dòng)生產(chǎn)的標(biāo)識(shí)列. 那么outpu就派上用場(chǎng)了.

declare @temp table(k int, v nvarchar(200)) insert into t1(datacol) output inserted.keycol, inserted.datacol into @temp select lastname from TSQLFundamentals2008.hr.Employees where country='uk' ? select * from @temp

帶有output的delete語(yǔ)句和update語(yǔ)句也大同小異.

delete語(yǔ)句能操作deleted臨時(shí)表. 而update的本質(zhì)是delete和insert一次能操作inserted和updated兩張表.

?

?

帶有output的merge子句.

在merge子句的output輸出中可以調(diào)用@action函數(shù). 會(huì)返回一個(gè)代表相應(yīng)操作的字符串(insert, update, delete)

?

SQL2000獲得新增行的自動(dòng)增長(zhǎng)列的語(yǔ)句如下:

insert into TestTable (CreatedDate)? values (getdate())

select @@IDENTITY

?

用select @@identity得到上一次插入記錄時(shí)自動(dòng)產(chǎn)生的ID

如果你使用存儲(chǔ)過(guò)程的話(huà),將非常簡(jiǎn)單,代碼如下:SET @NewID=@@IDENTITY

?

@@identity使用注意事項(xiàng)


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

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

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

?

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

?

?

?

在C#中使用ExecuteScalar()方法獲得第一行第一列的值(即自增id):

object val = cmd.ExecuteScalar();

轉(zhuǎn)載于:https://www.cnblogs.com/TBW-Superhero/p/5510955.html

總結(jié)

以上是生活随笔為你收集整理的SQL获取刚插入的记录的自动增长列ID的值的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 麻豆传媒在线播放 | 久久五月婷 | 综合天堂av久久久久久久 | 久久精品视频9 | 日韩中文字幕 | 亚洲a一区| 制服丝袜一区 | 黄色的视频网站 | jizz教师| 欧美日韩成人免费观看 | 国产字幕侵犯亲女 | 久热精品免费视频 | 又黄又爽又色视频 | 国产亚洲欧美日韩精品 | 欧美成人免费大片 | 国产婷婷 | 中字av在线 | 亚洲人成电影一区二区在线 | 男生和女生差差视频 | 麻豆传媒在线播放 | 大香蕉毛片 | 高hnp视频| 国产精品区二区三区日本 | 国产av日韩一区二区三区精品 | 少妇大叫太粗太大爽一区二区 | 激情精品 | 97自拍视频 | 亚洲av永久无码国产精品久久 | 亚洲成色在线 | 成人动漫av | 在线观看国产区 | av在线看片 | 被警察猛c猛男男男 | 91打屁股| 3d动漫精品h区xxxxx区 | 成人91视频 | 精品蜜桃一区二区三区 | 动漫玉足吸乳羞免费网站玉足 | 欧美性教育视频 | 高清中文字幕mv的电影 | 777视频在线观看 | 韩国毛片一区二区三区 | 欧美日韩1| 麻豆影视在线免费观看 | 国产日韩欧美激情 | 亚洲国产一二三区 | 超在线视频 | 色综合天天色 | 欧亚免费视频 | www午夜视频 | 91精品国产乱码在线观看 | 亚洲产国偷v产偷v自拍涩爱 | 黄色av成人 | 青青草伊人久久 | 四虎影院在线免费播放 | 综合五月婷 | 久久久九九九热 | 一级特黄av| 亚洲伊人天堂 | 性调教学院高h学校 | 久久国产精品久久久 | 网站在线播放 | 亚洲精品乱码久久久久久按摩观 | 长河落日电视连续剧免费观看 | 丁香花电影高清在线阅读免费 | 青青青国产| 日日干夜夜撸 | 在线观看网站污 | 精品无码人妻一区二区三区 | 亚洲精品aⅴ中文字幕乱码 国产精品调教视频 | 欧美鲁鲁| 亚洲成熟丰满熟妇高潮xxxxx | 欧美日韩一区二区三区电影 | 成人免费观看av | 国产第6页| 一道本不卡视频 | 亚洲国产精品成人av | 天堂网在线观看视频 | 91美女片黄在线观看游戏 | 亚洲男人在线 | 国产乡下妇女做爰视频 | 无码精品久久久久久久 | 色女综合| 日韩一区二区三区四区在线 | 日本三级片在线观看 | www.97av.com| www视频在线观看网站 | 韩国三级久久 | 5个黑人躁我一个视频 | 又爽又黄又无遮挡 | 在线看污片 | 国产一页 | 国产宾馆实践打屁股91 | 久久99日韩 | 中文字幕一区二区三区四区欧美 | 国产福利91精品一区二区三区 | 无限国产资源 | 久久久久久91 | 久久精品一区二区三区黑人印度 |