日期:2014-05-17  浏览次数:20600 次

【新手问题】如何防止同时执行同一个存储过程?
因为我的数据库有个表,每条数据不同,在用户读取一条数据之后,就会删除这条数据,并且把这条数据存在另外一个表里。我把这3个操作写在了同一个存储过程当中,我担心用户多了,就会出现两个用户同时执行这个存储过程,这样有可能就读取到相同的数据。请问如何避免这个问题?

只要能实现相同的功能,并且避免读到相同的数据,任何方法都可以。当然越简单越好。

------解决方案--------------------
使用事务
SQL code

BEGIN TRANSACTION
INSERT INTO ...
--你的语句   SAVE TRANSACTION savepoint(根据你的情况可以设置保存点)
IF @@Error<>0
BEGIN
PRINT '不能重复插入'
ROLLBACK TRANSACTION--事务回滚语句
END
ELSE
BEGIN
PRINT '插入成功'
COMMIT TRANSACTION--事务提交语句
END
END