【问题标题】:how to restrict one table primary key should reference to another table exact number of foreign key如何限制一个表的主键应该引用另一个表的确切外键数
【发布时间】:2023-03-06 06:33:01
【问题描述】:

我想将一个表的确切数量的外键引用到另一个表中的一个主键。例如,如果我们得到确切的数字为三个。一个主键应该只连接另一个表中的三个外键。我使用 USER 表来存储用户详细信息,并使用 PRODUCT 表来存储用户购买产品的详细信息。如果 USER 表的主键为 ID 并且 PRODUCT 表具有通过 USER 表的外键引用>User_ID 列。一个用户 id(USER 表中的 ID 列)应该限制在 PRODUCT 表中的三个记录的确切数量。简单地说,用户最多可以购买三个产品,不能超过。我可以在 MySQL 中做到这一点吗?

【问题讨论】:

  • 请提供示例表数据来说明您的意思。
  • 另外,主键不会“引用”任何东西。
  • 现在可以理解了吗?你能明白我想问什么吗? @戴
  • 目前还不清楚。请提供示例数据,显示展示该想法的实际行。

标签: mysql foreign-keys primary-key


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2016-11-06
    • 2020-06-27
    • 1970-01-01
    相关资源
    最近更新 更多