您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

SQL-友谊表的最佳做法

SQL-友谊表的最佳做法

使该FRIENDSHIP表的主键为:

…将确保您不能有重复的订单。意思是,它将阻止您添加用户标识“ 123”和友好标识“ 789”的重复项。如果包含状态列,则不再是这种情况,因为不同的状态值将允许userid和friendid列的重复。

为了停止反向对-用户标识“ 789”和友好标识“ 123”,您需要包含逻辑以检查该对在存储过程,函数或触发器中是否已存在于表中。如果还不存在相反的条件,则userid <friendid的CHECK约束将停止添加userid“ 789”和friendid“ 123”的有效尝试。

INSERT INTO FRIENDSHIP
SELECT @userid, @friendid, 1
  FROM FRIENDSHIP f
 WHERE NOT EXISTS(SELECT NULL
                    FROM FRIENDSHIP t
                   WHERE (t.userid = @friendid AND t.friendid = @userid)
                      OR (t.userid = @userid AND t.friendid = @friendid)
SQLServer 2022/1/1 18:39:33 有486人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶