我有一个表用户,其中列 id 。我希望用户与其他用户建立关系,因此我创建了一个表关系,其中列 user_id_1 和 user_id_2 。
问题是如何约束表格以便
1)没有 user_id_1 等于 user_id_2 的条目。
例如,条目(1,1)很糟糕,因为它表明与自己的关系。
2)如果有条目(user_id_1,user_id_2),则不允许使用条目(user_id_2,user_id_1)。
例如,输入条目(1,2)和(2,1)是不好的,因为它表示相同的关系。
我正在使用MySQL,虽然我认为这是一个一般的设计问题。谢谢!
答案 0 :(得分:1)
您可以在联接表上写一个INSERT
和UPDATE
triggers来检查这些条件。
答案 1 :(得分:1)
您使用触发器:
DELIMITER $$
CREATE TRIGGER bi_relationschip_each BEFORE INSERT ON relationship FOR EACH ROW
BEGIN
IF NEW.user1_id = NEW.user2_id THEN
SELECT error_user1_cannot_be_equal_to_user2 FROM generate_error;
END IF;
END $$
DELIMITER ;