WD1X.COM - 问答一下,轻松解决,电脑应用解决专家
主板显卡CPU内存显示器
硬盘维修显卡维修显示器维修
注册表系统命令DOS命令Win8
存储光存储鼠标键盘
内存维修打印机维修
WinXPWin7Win11Linux
硬件综合机箱电源散热器手机数码
主板维修CPU维修键盘鼠标维修
Word教程Excel教程PowerPointWPS
网络工具系统工具图像工具
数据库javascript服务器
PHP教程CSS教程XML教程

sql语句返回主键SCOPE_IDENTITY()

更新时间:2012-04-13 14:55 作者:佚名点击:
在sql语句后使用 
SCOPE_IDENTITY() 
当然您也可以使用 SELECT @@IDENTITY 
但是使用 SELECT @@IDENTITY是去全局最新. 有可能取得值不正确. 
示例: 
insert into dbo.SNS_BlogData(userName) values('jiangyun') ; 
SELECT SCOPE_IDENTITY() 
获取SQL-SERVER数据库insert into操作的主键返回值,SCOPE_IDENTITY 
插入一条记录后想要立刻获取其数据表中的主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询,获取出来。或者在插入数据之前取 出最大值,在最大值上面加一等等,方法很多,但是有些很不方便。 
个人感觉最快的方式就是,在插入数据后直接获取主键的值,然后返回过来。 
方法如下: 
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; 

 

当然在此处主键是int类型的自动增加的。DBopen();DBclose();的操作在此就 不多说了。 
select SCOPE_IDENTITY() 
返回上面操作的数据表最后row的IDENTITY 列的值; 
返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块——存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。 
SELECT @@IDENTITY 
返回上面操作最后一个数据表的最后row的IDENTITY 列的值; 
创建表: 
   create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null)  
插入数据: 
  insert into T_User(F_Name) values('我是谁') Select SCOPE_IDENTITY()  
存储过程: 
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() 
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
你可能感兴趣的内容