我正在尝试设计一个朋友的名单,类似于其他社交媒体网站。我为此创建了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时,我无法弄清楚如何创建另一个条目。