Sql语句返回主键SCOPE_IDENTITY()
在sql语句后使用SCOPE_IDENTITY()
当然,你也可以使用选择@ @身份
但是,使用SELECT @@IDENTITY是全局更新。获得的值可能不正确。
示例:复制代码如下:插入intodbo.sns _ blogdata(用户名)值(姜云);SELECT SCOPE_IDENTITY()获取SQL-SERVER数据库insert into操作的主键返回值SCOPE_IDENTITY。
插入记录后,您希望立即在其数据表中获得主键返回值。这个主键是自动生成的。其实实现的方法有很多,比如再次查询,获取。或者在插入数据之前获得最大值,将最大值加1,等等。方法很多,但有些不方便。个人感觉最快的方法是插入数据后直接获取主键的值,然后返回。方法如下:sql语句如下:insert into tablename (fieldname.)值(值.)选择@ @ identity作为返回名;添加SELECT @@IDENTITY作为returnName到sql语句。用来获取主键的值在程序中获取返回值:复制代码如下:public int SQL ExecuteReader(string SQL){ db open();SqlCommand my comm=new SqlCommand(SQL,Connection);int newID=Convert。ToInt32(myComm。ExecuteScalar());db close();返回newID}这里当然是自动添加int类型的主键。DBopen();db close();这里就不多说操作了。
select SCOPE_IDENTITY()
返回上面操作的数据表最后一行的标识列的值;
返回在同一范围内插入到标识列中的最后一个标识值。范围是模块——存储过程、触发器、函数或批处理。因此,如果两个语句在同一个存储过程、函数或批处理中,则它们在同一个范围内。
选择@ @身份
返回上述操作的最后一个数据表的最后一行的标识列的值;创建表格:
create table t _ user(f _ id int identity(1,1) not null,f _ name varchar (20) not null)插入数据:
到t _ user (f _ name)值(我是谁)中选择SCOPE_IDENTITY()存储过程:
创建过程[dbo]。[sp _ User](@ F _ Name int)AS begin trans Insertinto _ T _ User Insert into dbo。T_User(F_Name)值(@F_Name) Select SCOPE_IDENTITY()