sql 存储过程
在存储过程中写了一条insert语句,然后又select了一次最大值(这个最大值不是自增长),现在是想知道这个select最大值应该是在这一次事务处理里完成的,不会是好多用户同时新建数据,然后获得不是本条新增的最大值吧
------解决方案--------------------
可以,因为要实现你的需求,无非就是提高隔离级别,但是,这样会导致性能严重下降,阻塞其他的事务
------解决方案--------------------如果是SQL2005及以上版本的MSSQL,
可以在insert语句里用output子句,获取该新增的最大值(如下例子).就不会有并发执行的问题.
-- 建测试表
create table wx(c1 int,c2 varchar(10))
-- 建临时表
create table #t(c1 int)
insert into wx(c1,c2)
output inserted.c1 into #t
values(40,'aaa')
-- 获取刚insert新增的c1值
select c1 from #t
/*
c1
-----------
40
(1 row(s) affected)
*/