`

sqlserver insert 后的主键获取方式

 
阅读更多

SQL Server 中,可以使用 SCOPE_IDENTITY()、 @@IDENTITY 、 IDENT_CURRENT() 来取得最后插入记录的值值,它们的区别在于:
SCOPE_IDENTITY() 返回插入到同一作用域中的 IDENTITY 列内的最后一个 IDENTITY 值。一个作用域就是一个模块--存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。
@@IDENTITY       返回在当前会话的所有表中生成的最后一个标识值
IDENT_CURRENT()  返回为任何会话和任何作用域中的指定表最后生成的标识值

CREATE PROCEDURE [dbo].[prInsertCustomArea]
 @AreaName NVARCHAR(50),
    @userid INT,
    @corpid INT,
    @AreaWebLatlon VARCHAR(4000),
    @Remark NVARCHAR(50),
 @CenterWebLatLon nvarchar(50),
 @CenterLatLon nvarchar(50),
 @ImageUrl nvarchar(100),
 @AreaWidth float,
 @AreaHigh float,
 @Acreage float,
 @minLat numeric(9, 6),
 @minLon numeric(9, 6),
 @MaxLat numeric(9, 6),
 @MaxLon numeric(9, 6),
 @AreaLatLon varchar(5000),
    @O_RETURN int output --声明Out参数

AS
BEGIN
Declare  @ID   int;
 -- SET NOCOUNT ON added to prevent extra result sets from
 -- interfering with SELECT statements.
 SET NOCOUNT ON;
 INSERT INTO customArea(AreaName,userid,corpid,AreaLatlon,AreaWebLatlon,Remark,
      CenterWebLatLon,CenterLatLon,ImageUrl,AreaWidth,AreaHigh,Acreage)
  VALUES(@AreaName,@userid,@corpid,'',@AreaWebLatlon,@Remark,
              @CenterWebLatLon,@CenterLatLon,@ImageUrl,@AreaWidth,@AreaHigh,@Acreage)
 select @ID = IDENT_CURRENT('customArea');--需要传递表名
  
  INSERT INTO CustomAreaLatLon(minLat,minLon,MaxLat,MaxLon,InputTime,AreaID,AreaLatLon)
 VALUES(@minLat,@minLon,@MaxLat,@MaxLon,GetDate(),@ID,@AreaLatLon);
set @O_RETURN = @@error--给Out参数赋值 
--@@error 表示执行存储过程返回的错误代码,0代表成功,否则,返回错误代码;

END

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    SqlServer 永不重复的主键(非自增列)

    数据库自增列主键在数据库还原时百分百会出问题 为解决该问题特开发自定义式的主键 创建一个监控表,一个被调用的存储过程即可,推荐有存储过程编广泛使用的程序使用 调用方法 DECLARE @PKID CHAR(12)='' EXEC [dbo]....

    SQL SERVER获取插入数据的ID

    获取插入数据的ID,收集起来,以方便使用!

    SQLServer2005考试题及答案

    SQLServer考试题及答案 选择题: 1、在MS SQL Server中,用来显示数据库信息的系统存储过程是( ) A sp_ dbhelp B sp_ db C sp_ help D sp_ helpdb 2、SQL语言中,删除一个表的命令是( ) A DELETE B DROP C ...

    SQL Server 2008编程入门经典(第3版)

    9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...

    sqlserver自定义函数

    set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'') end return end select * from dbo.f_splitstr('1,2,3,4',',') --全角和半角转换函数 Create FUNCTION f_Convert( @str ...

    SQL Server2000测试题

    这是SQL Server2000测试题。 1 有订单表,需要实现它的编号,格式如下:200211030001……200222039999等 Replace(substring(convert(varchar(20),getdate(),120),1,10),’-’,’ ‘)+max(订单号)+1 2 有表T1,T2,...

    SQL Server2005基础教程

    本书重点阐述了SQL Server 2005的基础知识,前半部分以建立一个金融数据库系统为主线,从最基础的收集信息入手,一步步地引导读者学会如何保证数据库的安全,创建表、主键、索引等项目,在表之间建立恰当的关系,并...

    sql语句返回主键SCOPE_IDENTITY()

    SELECT SCOPE_IDENTITY() 获取SQL-SERVER数据库insert into操作的主键返回值,SCOPE_IDENTITY 插入一条记录后想要立刻获取其数据表中的主键返回值。这个主键是自动生成的,其实实现的方式有很多,比如再进行一次查询...

    SQL Server 打开或关闭自增长

    在往数据库表中添加一行的时候,要针对... 代码如下:SET IDENTITY_INSERT [Recursive] ON   INSERT INTO [Recursive](id,text) VALUES(3,’c’)   SET IDENTITY_INSERT [Recursive] OFF 通常我们在导入数据的时候会用

    深入Mysql,SqlServer,Oracle主键自动增长的设置详解

    1、把主键定义为自动增长标识符类型MySql在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如: 代码如下:create table customers(id int auto_increment primary key not null, name...

    SqlServer 在事务中获得自增ID的实例代码

    在sqlserver 中插入数据时,如何返回自增的主键ID,方式有很多,这里提供一种。 代码如下: USE tempdb go CREATE TABLE table1 ( id INT, employee VARCHAR(32) ) go INSERT INTO table1 VALUES(1, 'one') ...

    SQL.Server.2008编程入门经典(第3版).part2.rar

    9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...

    SQL.Server.2008编程入门经典(第3版).part1.rar

    9.2.2 SQLServer中访问数据的方式 9.3 创建、修改和删除索引 9.3.1 CREATEINDEX语句 9.3.2 创建XML索引 9.3.3 随约束创建的隐含索引 9.3.4 在稀疏列和地理空间列上创建索引 9.4 明智地选择——在何时何地使用何种...

    SQLServer数据库设计规范.txt

    SQLServer数据库设计规范 作者:佚名 厚朴教育来源:网络 点击数:1446 更新时间:2008-12-2 1 相关的设计规范: 1.1 采用有意义的字段名 尽可能地把字段描述的清楚些。当然,也别做过头了,比如...

    sqlserver存储过程

    Set @Sql='Insert into Users Values(''jilongliang'',''123456'',''广东阳春'')' Exec (@Sql) set @n=@n+1 End End ------------查询一下是不是插入--------------- Select *from Users; ---------...

    SQL入门之样例表脚本(Microsoft SQL Server)

    1. create.text包含创建5个数据库表(包括定义所有主键和外键约束)的SQL语句。 2. populate.txt包含用来填充这些表的SQL INSERT语句。 这些文件中的SQL语句依赖于具体的DBMS,因此应该执行适合于你的DBMS的那个。...

    SQLServer用存储过程实现插入更新数据示例

    2)有主键相同,但是数据不同的数据,进行更新处理(返回值:2); 3)没有数据,进行插入数据处理(返回值:1)。 【创建存储过程】 Create proc Insert_Update @Id varchar(20), @Name varchar(20), @...

    SQL Server如何在变长列上存储索引

    这篇文章我想谈下SQL Server如何在变长列上存储索引。首先我们创建一个包含变长列的表,在上面定义主键,即在上面定义了聚集索引,然后往里面插入80000条记录: 1 — Create a new table 2 CREATE TABLE Customers...

    黄淮学院2010学年第二学期SQL server期末考试

    期末考试《SQL server数据库应用技术》A卷 注意事项:本试卷适用于2009级 专业学生使用 题号 一 二 三 四 五 总分 核分人 得分 得分 评卷人 一、填空题(每空1分,共20分) _______________,简称...

Global site tag (gtag.js) - Google Analytics