[英]SQL SCOPE_IDENTITY Recording twice
我有一个存储过程
@user1 uniqueidentifier ,
@user2 uniqueidentifier ,
@mesaj_text varchar(500),
@mesaj_read int
AS
BEGIN
declare @chat_id int
IF EXISTS (SELECT chat_id FROM chat where user1=@user1 and user2 =@user2 or user1=@user2 and user2 =@user1)
BEGIN SELECT @chat_id =chat_id FROM chat where user1=@user1 and user2 =@user2 or user1=@user2 and user2 =@user1
INSERT INTO mesaj values (@chat_id,@user1,@mesaj_text,getdate(),@mesaj_read) END
ELSE insert into chat values (@user1,@user2)
SET @chat_id=SCOPE_IDENTITY()
insert into mesaj values (@chat_id,@user1,@mesaj_text,getdate(),@mesaj_read)
一切都好。
但是记录两次“ mesaj”。获取第一个插入的“ mesaj”的id并将其用作chat_id进行第二次记录。 因此,记录了两次。(mesaj表示土耳其语中的消息:))。我尝试使用@@ IDENTITY代替SCOPE_IDENTITY,但没有任何更改。我尝试使用IDENT_CURRENT(chat),但返回错误“无效的列名'chat'”。
我怎么解决这个问题 ?
您需要将ELSE
之后的所有内容都包装在BEGIN
和END
以使所有内容均以IF
为条件。
@user1 uniqueidentifier ,
@user2 uniqueidentifier ,
@mesaj_text varchar(500),
@mesaj_read int
AS
BEGIN
declare @chat_id int
IF EXISTS (SELECT chat_id FROM chat where user1=@user1 and user2 =@user2 or user1=@user2 and user2 =@user1)
BEGIN
SELECT @chat_id =chat_id FROM chat where user1=@user1 and user2 =@user2 or user1=@user2 and user2 =@user1
INSERT INTO mesaj values (@chat_id,@user1,@mesaj_text,getdate(),@mesaj_read)
END
ELSE
BEGIN
insert into chat values (@user1,@user2)
SET @chat_id=SCOPE_IDENTITY()
insert into mesaj values (@chat_id,@user1,@mesaj_text,getdate(),@mesaj_read)
END
END
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.