首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-01-06 
关于一个并发的问题,谢谢了先CREATETABLE[dbo].[Test]([ID][bigint]IDENTITY(1,1)NOTNULL,[NAME][char](10

关于一个并发的问题,谢谢了先
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

热点排行