sql語句返回主鍵SCOPE_IDENTITY()
更新時(shí)間:2011年09月22日 00:09:32 作者:
sql語句返回主鍵SCOPE_IDENTITY()
在sql語句后使用
SCOPE_IDENTITY()
當(dāng)然您也可以使用 SELECT @@IDENTITY
但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正確.
示例:
insert into dbo.SNS_BlogData(userName) values('jiangyun') ;
SELECT SCOPE_IDENTITY()
獲取SQL-SERVER數(shù)據(jù)庫insert into操作的主鍵返回值,SCOPE_IDENTITY
插入一條記錄后想要立刻獲取其數(shù)據(jù)表中的主鍵返回值。這個(gè)主鍵是自動(dòng)生成的,其實(shí)實(shí)現(xiàn)的方式有很多,比如再進(jìn)行一次查詢,獲取出來?;蛘咴诓迦霐?shù)據(jù)之前取 出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。
個(gè)人感覺最快的方式就是,在插入數(shù)據(jù)后直接獲取主鍵的值,然后返回過來。
方法如下:
sql語句如下:
INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;
在sql語句中加入SELECT @@IDENTITY AS returnName;用來獲取主鍵的值
在程序中 獲取返回值:
public int sqlexecutereader(string sql)
{
DBopen();
SqlCommand myComm = new SqlCommand(sql, Connection);
int newID = Convert.ToInt32(myComm.ExecuteScalar());
DBclose();
return newID;
}
當(dāng)然在此處主鍵是int類型的自動(dòng)增加的。DBopen();DBclose();的操作在此就 不多說了。
select SCOPE_IDENTITY()
返回上面操作的數(shù)據(jù)表最后row的IDENTITY 列的值;
返回插入到同一作用域中的 IDENTITY 列內(nèi)的最后一個(gè) IDENTITY 值。一個(gè)作用域就是一個(gè)模塊——存儲(chǔ)過程、觸發(fā)器、函數(shù)或批處理。因此,如果兩個(gè)語句處于同一個(gè)存儲(chǔ)過程、函數(shù)或批處理中,則它們位于相同的作用域中。
SELECT @@IDENTITY
返回上面操作最后一個(gè)數(shù)據(jù)表的最后row的IDENTITY 列的值;
創(chuàng)建表:
create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null)
插入數(shù)據(jù):
insert into T_User(F_Name) values('我是誰') Select SCOPE_IDENTITY()
存儲(chǔ)過程:
CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS
begin tran Insertinto_T_User
Insert into dbo.T_User(F_Name) values(@F_Name)
Select SCOPE_IDENTITY()
SCOPE_IDENTITY()
當(dāng)然您也可以使用 SELECT @@IDENTITY
但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正確.
示例:
復(fù)制代碼 代碼如下:
insert into dbo.SNS_BlogData(userName) values('jiangyun') ;
SELECT SCOPE_IDENTITY()
獲取SQL-SERVER數(shù)據(jù)庫insert into操作的主鍵返回值,SCOPE_IDENTITY
插入一條記錄后想要立刻獲取其數(shù)據(jù)表中的主鍵返回值。這個(gè)主鍵是自動(dòng)生成的,其實(shí)實(shí)現(xiàn)的方式有很多,比如再進(jìn)行一次查詢,獲取出來?;蛘咴诓迦霐?shù)據(jù)之前取 出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。
個(gè)人感覺最快的方式就是,在插入數(shù)據(jù)后直接獲取主鍵的值,然后返回過來。
方法如下:
sql語句如下:
INSERT INTO tableName (fieldname ...) values (value ...) SELECT @@IDENTITY AS returnName;
在sql語句中加入SELECT @@IDENTITY AS returnName;用來獲取主鍵的值
在程序中 獲取返回值:
復(fù)制代碼 代碼如下:
public int sqlexecutereader(string sql)
{
DBopen();
SqlCommand myComm = new SqlCommand(sql, Connection);
int newID = Convert.ToInt32(myComm.ExecuteScalar());
DBclose();
return newID;
}
當(dāng)然在此處主鍵是int類型的自動(dòng)增加的。DBopen();DBclose();的操作在此就 不多說了。
select SCOPE_IDENTITY()
返回上面操作的數(shù)據(jù)表最后row的IDENTITY 列的值;
返回插入到同一作用域中的 IDENTITY 列內(nèi)的最后一個(gè) IDENTITY 值。一個(gè)作用域就是一個(gè)模塊——存儲(chǔ)過程、觸發(fā)器、函數(shù)或批處理。因此,如果兩個(gè)語句處于同一個(gè)存儲(chǔ)過程、函數(shù)或批處理中,則它們位于相同的作用域中。
SELECT @@IDENTITY
返回上面操作最后一個(gè)數(shù)據(jù)表的最后row的IDENTITY 列的值;
創(chuàng)建表:
create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null)
插入數(shù)據(jù):
insert into T_User(F_Name) values('我是誰') Select SCOPE_IDENTITY()
存儲(chǔ)過程:
CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS
begin tran Insertinto_T_User
Insert into dbo.T_User(F_Name) values(@F_Name)
Select SCOPE_IDENTITY()
相關(guān)文章
SQLSERVER 語句交錯(cuò)引發(fā)的死鎖問題案例詳解
這篇文章主要介紹了SQLSERVER 語句交錯(cuò)引發(fā)的死鎖研究,要解決死鎖問題,個(gè)人感覺需要非常熟知各種隔離級(jí)別,尤其是 可提交讀 模式下的 CURD 加解鎖過程,這一篇我們就來好好聊一聊2023-02-02SQL Server 2014 數(shù)據(jù)庫中文版安裝圖文教程
這篇文章主要介紹了SQL Server 2014 數(shù)據(jù)庫中文版安裝圖文教程,需要的朋友可以參考下2021-05-05centos7部署SqlServer2019的實(shí)現(xiàn)步驟
最近工作需要,需要在服務(wù)器上部署一個(gè)sql server 數(shù)據(jù)庫,本文主要介紹了centos7部署SqlServer2019的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01SQL設(shè)置SQL Server最大連接數(shù)及查詢語句
今天遇到了關(guān)于Sql Server最大連接數(shù)(Max Pool Size)的問題,后來通過查找一些資料解決了,所以想著總結(jié)下關(guān)于SQL Server最大連接數(shù)的內(nèi)容,所以這篇文章主要介紹了SQL設(shè)置SQL Server最大連接數(shù)與查詢語句,有需要的朋友們可以參考借鑒。2016-12-12SQL Server中數(shù)據(jù)行批量插入腳本的存儲(chǔ)實(shí)現(xiàn)
這篇文章主要介紹了SQL Server中數(shù)據(jù)行批量插入腳本的存儲(chǔ)實(shí)現(xiàn) 的相關(guān)資料,需要的朋友可以參考下2015-12-12SQL實(shí)現(xiàn)模糊查詢的四種方法總結(jié)
本文主要介紹了SQL實(shí)現(xiàn)模糊查詢的四種方法總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07