取得SQLServer自增列(IDENTITY)的id值 (轉)


方案一   sqlserver返回插入的自增id

語法:

insert into tablename (字段1,字段1) output inserted.id values ('hhh','123');

inserted.id的id是你表的id,執行此語句就可以返回自增的id

 

例子:

insert into applyinfo (a_hospital,a_barcode) output inserted.a_id values ('1','2');

 

方案二  取得SQLServer自增列(IDENTITY)的id值

SQLServer支持自增列作為主鍵,自增列為數據庫開發帶來很多便利,但同時也帶來一些麻煩

1、如何在插入數據記錄后獲得自增列主鍵值

通過SQLServer幫助可以知道使用select scope_identity()是獲得剛剛插入的自增列值的最好方法,但select scope_identity()必須在一個scope中才能獲得,因此jdbc開發中你不可能在第二條SQL語句中獲得自增列值,即使在同一個statement中;唯一的方法就是在插入數據的同時獲得自增列值,這給數據庫開發過程帶來不便:

String sql = "insert into table(a,b) values('a','b') select scope_identity()";

statement.execute(sql);

statement.getMoreResults();

ResultSet rs = statement.getResultSet();

rs.next();

int no = rs.getInt(1);

2 、如何在不希望插入數據的時候獲得下一個自增列值

在有些情況下,需要獲得下一個自增列值,但又不希望插入記錄到數據庫,而且獲得的自增列值,在后續操作中不會被數據庫在作為主鍵產生;

面對這中狀況幾乎唯一的辦法就是,在一個事務,產生一條任意的合法的數據插入數據庫,然后獲得自增列值,再刪除該記錄;這也給開發過程帶來不少的麻煩,因為要插入的數據必須符合數據庫約束,必須滿足業務邏輯,這對數據庫SQL語句自動生成和執行帶來額外的挑戰

 

C#中取自增字段的方法是: int id = Convert.ToInt32(cmd.ExecuteScalar());

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM