我正在尝试设计一个朋友的名单,类似于其他社交媒体网站。我为此创建了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 |
+----------+-----------+----------------------------------------------------+
答案 0 :(得分:0)
其中可以执行SQL指令的SQL服务器中IF
块的语法如下:
IF (@Status = 1)
BEGIN
INSERT INTO ...
END
END