易截截图软件、单文件、免安装、纯绿色、仅160KB

请教sql高手,关于ms-sqlserver锁机制

SQL code:

declare @cnt int
select @cnt=count(1) from TableTest
if(@cnt==0)
insert into TableTest values(1,'abc')



对于这样的一段sql并发执行时,应该有可能插入重复记录
不知道大家是怎么防止出现重复数据,我用了表级锁,可是还是出现了两条同样记录
我是这样处理的

SQL code:

declare @cnt int
begin tran
select @cnt=count(1) from TableTest with(TABLOCKX)
if(@cnt==0)
begin
insert into TableTest values(1,'abc')
commit tran
end


打happyflystone..超级强人..跟鲍尔默一样强..

只知道happyflystone  不知道鲍尔默

加个约束不就行吗

with(TABLOCKX) 会有x锁,应该不会重复

学习

lz的写法至少应该有个else rollback tran


顶一下~

不清楚,顶下子

学习

引用
lz的写法至少应该有个else rollback tran

up

引用
引用 6 楼 perfectaction 的回复:
lz的写法至少应该有个else rollback tran

up


else我的代码里有
散分~


相关问答:

sql server 2000 +asp网站7个小时后出问题

自从直接在一个表里加了个字段(nvarchar 其他默认,不插入自己默认为 <null>)后,重启网站+sql server 2000 6-8个小时后出现问题:网站写数据库时脚本超时

Active Server Pages 错误 'ASP 0113 ......

java连接sql 2005问题 在线等。。。。


import java.sql.*;

public class Test {
public static void main(String[] srg) {
  String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";  //加载JDBC ......

一个SQL语句的问题。高手帮帮忙

有两个表。分别都有ID主键。A表的ID和B表的ID是对应的,就是A表几个ID,B表就几个ID。A表的ID是什么,B表的ID就是什么。
可是现在A表的ID比B表的多了。
我现在想要把B表中少的部分给补齐了。这个插入应该怎么写 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号