读书人

关于一个并发的有关问题,多谢了先

发布时间: 2012-01-06 22:55:18 作者: rapoo

关于一个并发的问题,谢谢了先
CREATE TABLE [dbo].[Test] (
[ID] [bigint] IDENTITY (1, 1) NOT NULL ,
[NAME] [char] (100) NOT NULL
[ADDRESS] [char] (100) NOT NULL
) ON [PRIMARY]

表中数据如下
IDNAMEADDRESS
1IBMIBM_ADDR
2SONYSONY_ADDR
3DellDELL_ADDR
4HPHP_ADDR

NAME字段为不可重复

我希望,当插入新数据时,先查看插入的NAME是否有重复,如果已存在,则用新资料修改以存在记录,否则,插入新数据
我用事务实现了,但是不知道这样做是不是最好,是不是还有漏洞,是不是效率追高

该数据表的并发程度比较高

CREATE PROCEDURE INSERTCLIENT (@NAMECHAR(100)
@ADDRESS CHAR(100))

As

Begin Translate

if Exists(Select ID From TEST WHERE NAME = @NAME)
Update TEST
SET ADDRESS = @ADDRESS
WHERE NAME = @NAME
ELSE
INSERT INTO TEST (NAME, ADDRESS) VALUES (@NAME, @ADDRESS)

IF @@ERROR <> 0
BEGIN
Rollback Translate
RETURN -1
END
Else BEGIN
Commit Translate
RETURN 0
END


谢谢了

[解决办法]
很好
[解决办法]
我觉得这个好象应该是可以的;不过还有一个方法就是用触发器~~~


但是触发器估计没这个好~

[解决办法]
Begin Translate ? Begin Transaction ?
[解决办法]
就怕发生死锁或者阻塞哦~
[解决办法]
呵呵,楼主有笔误?
TRANSACTION

读书人网 >SQL Server

热点推荐