麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 綜合 > 正文

insert后獲得自動插入的id

2024-07-21 02:52:23
字體:
來源:轉載
供稿:網友

    在寫CRUD的時候,對于有自動增長列的表(Id自增),我們在insert 以后想要得到自動增長的id,該怎么做?

   由于insert的時候,Id是在數據庫自動增長的,所以我們沒法獲得反饋回來的Id,而如果通過insert后,再select一次又浪費時間,這個時候我們應該怎么做呢?

    可以使用output inserted.Id

假設表結構如下:create table Stu(  id int identity,  Varchar name)

//獲得新增行的自動增長列的語句

insert into Stu(name)  output  inserted.id  values ('小明‘)

執行該語句后返回insert后的自增Id

output 是sql server2005的新特性,可以從數據修改語句中返回輸出,可以看作是“返回結果的DML”2005之后 Insert,Delete,Update語句 均支持Output語句,在Output語句中可以引用inserted和deleted。使用方法同觸發器類似。使用該方法最大弊端就是需要指定主鍵。output Inserted.要返回的值。

另:在遇到該問題的時候,也查閱到@@IDENTITY 和SCOPE_IDENTITY()也可以獲取自增的Id字段。

例:

insert intoStu (name)  values ('小明‘)select @@IDENTITY

用select @@identity得到上一次插入記錄時自動產生的ID

但需要注意的是:@@IDENTITY 它總是獲取最后一條變更數據的自增字段的值,而忽略了進行變更操作所在的范圍約束。(作用全局范圍內)

有什么影響?比如:我在主數據表A上定義一個Insert觸發器,但A表Insert一條數據時,同時在記錄表B中Insert一條數據,這時我使用select @@identity返回的就是B中的自增Id了。但我要的是A的Id,這時就出現問題了。(因為@@IDENTITY是取全局操作的最后一步操作所產生的自增域的值)

而使用SCOPE_IDENTITY()也是得到最后一條自增域的值,但是它是僅限在一個操作范圍之內,即上例獲取的就是A表這個范圍內的Id。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av手机在线电影 | 黄色片网站在线播放 | 久草热久 | 亚洲码无人客一区二区三区 | 久久91精品视频 | 国产亚洲精品久久久闺蜜 | 国产在线观看91一区二区三区 | 亚洲午夜在线观看 | 99国产精品国产免费观看 | 国产精品国产三级国产在线观看 | 国产精品成人一区 | 国产精品视频成人 | 蜜桃精品视频 | 污版视频在线观看 | 蜜桃网站在线观看 | 综合在线一区 | 泰剧19禁啪啪无遮挡 | 日韩欧美中文字幕视频 | 黄色影院在线 | 亚洲一区二区三区四区精品 | 亚洲aⅴ免费在线观看 | 久久久久av电影 | 欧美在线观看视频网站 | 九九热免费视频在线观看 | 日韩字幕在线观看 | 欧美一级黄视频 | 欧美激情精品久久久久久黑人 | 男女羞羞视频在线免费观看 | 久久69精品久久久久久国产越南 | 国产精品午夜未成人免费观看 | 中文字幕欧美一区二区三区 | 欧美三区在线 | 毛片免费在线 | 国产三级在线观看a | 国产一区二区三区精品在线观看 | 久草视频福利在线观看 | 91久久精品一二三区 | 18被视频免费观看视频 | av在线免费观看网 | 娇喘在线| 亚洲综合视频一区 |