更新发生后插入的存储过程

时间:2018-12-24 01:27:46

标签: sql sql-server

我正在尝试设计一个朋友的名单,类似于其他社交媒体网站。我为此创建了3个表。

在设计数据库时,如果person1向person2发送请求,则其状态为0(待定)。一旦person2接受,状态将更新为1(已接受),并且person1与person2成为朋友。即。数据库将具有person1-> person2和person2的另一个条目-> person1

状态更新后,我想编写一个存储过程,以便自动将另一行插入到好友请求表中,以使person2与person1和状态1成为朋友。

所需结果:personId2接受请求后,我希望状态更新为1并为其创建另一行,因为personId2是朋友personId1

代码:

ALTER PROCEDURE [dbo].[person_connections_update]
    @PersonId INT,
    @FriendId INT,
    @Status INT
AS
    /*
    DECLARE
        @_personId INT = 1,
        @_friendId INT = 2,
        @_status INT = 0

    EXEC person_connections_update
        @_personId,
        @_friendId,
        @_status
    */
BEGIN 
    BEGIN TRY
    BEGIN TRANSACTION
        UPDATE person_connections
        SET PersonId = @PersonId,
            FriendId = @FriendId,
            Status = @Status
        WHERE
            PersonId = @PersonId AND FriendId = @FriendId

        COMMIT TRANSACTION

        IF (@Status = 1)
        BEGIN
            INSERT INTO person_connections
            SET --what is the correct syntax here to insert the entry of user 2 being friends with user 1? i basically need to swap the values when the new entry is generated.
                PersonId = @FriendId,
                FriendId = @PersonId,
                Status = 1
        END
    END TRY
    BEGIN CATCH
        IF @@TRANCOUNT > 0
        BEGIN
            ROLLBACK TRANSACTION
        END
    END CATCH
END

到目前为止,这是我要进行的更新。这只是将状态更新为1,但是当状态更改为1时,我无法弄清楚如何创建另一个条目。

0 个答案:

没有答案