SQL SCOPE_IDENTITY记录两次



我有一个存储过程

 @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(聊天),但返回错误"列名称'聊天'无效"。

我该如何解决这个问题?

您需要将

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

相关内容

  • 没有找到相关文章

最新更新