繁体   English   中英

更新后插入的SQL Server存储过程

[英]SQL Server stored procedure for an insert after update

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

  • 第一个表包含所有用户的列表
  • 第二张表包含朋友的要求
  • 第三张表保存好友请求的状态码

在设计数据库时,如果user1向user143发送请求,则它们的状态将变为0(待处理)。 一旦user143接受,状态将更新为1(接受),并且user1与用户143成为朋友。

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

我有一个存储过程将状态更新为1,但不确定如何写条件插入(我也有另一个单独的存储过程,可以在IF条件之后使用该插入)。

在下面添加了示例代码

ALTER PROCEDURE person_connections_update
    @PersonId INT,
    @FriendId INT,
    @Status INT
AS
    /*
    DECLARE @_personId INT = 1,
            @_friendId INT = 143,
            @_status INT = 1

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

    -- I'm stuck here
    IF @Status = 1
        INSERT INTO ...
            ...
END

用户表:

+--------+-----------+
| UserId | FirstName |
+--------+-----------+
|      1 | Joe       |
|    143 | Bob       |
+--------+-----------+

状态表:

+----+----------+
| Id |  Status  |
+----+----------+
|  0 | Pending  |
|  1 | Accepted |
|  2 | Declined |
+----+----------+

好友请求表:

+----------+-----------+----------------------------------------------------+
| PersonId | FriendId  |                       Status                       |
+----------+-----------+----------------------------------------------------+
|        1 |       143 | 0 - updates to 1 after user143 acccepts            |
|      143 |         1 | 1 - want to add this row after status updates to 1 |
+----------+-----------+----------------------------------------------------+

在其中可以执行SQL指令的SQL Server中的IF块的语法如下:

IF (@Status = 1)
    BEGIN
        INSERT INTO ...
    END
END

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM