我想将一个表的确切数量的外键引用到另一个表中的一个主键。例如,如果我们得到三个确切的数字。一个主键应该只连接另一个表中的三个外键。我使用 USER 表来存储用户详细信息,使用 PRODUCT 表来存储用户的购买产品详细信息。如果 USER 表的主键为 ID 且 PRODUCT 表通过 USER 表的外键引用> User_ID 列。一个用户ID(USER表中的ID列)应该限制在 PRODUCT 表中的三个记录的确切数量。用户最多可以购买三个产品,而不是超过该产品。我可以在MySQL中这样做吗?
答案 0 :(得分:1)
你必须在MySQL中编写一个触发器来执行此操作。这是一个例子:
mysql> DELIMITER ;;
mysql> CREATE TRIGGER limit123 BEFORE INSERT ON Product
FOR EACH ROW BEGIN
IF ((SELECT COUNT(*) FROM Product WHERE user_id = NEW.user_id) > 2)
THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Only three products per user allowed';
END IF;
END;;
mysql> DELIMITER ;
mysql> INSERT INTO Product SET user_id=1;
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Product SET user_id=1;
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Product SET user_id=1;
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO Product SET user_id=1;
ERROR 1644 (45000): Only three products per user allowed