【问题标题】:How to limit a self-referencing table in MySQL so a row can't reference itself?如何限制 MySQL 中的自引用表,使行不能引用自身?
【发布时间】:2012-09-20 03:09:13
【问题描述】:

这是一个非常基本的表格来说明我的问题。

CREATE TABLE Customer (
CustID         INT,
CustLastName   VARCHAR (20),
ReferralID     INT,
ADD CONSTRAINT PRIMARY KEY (CustID),
ADD CONSTRAINT FOREIGN KEY (ReferralID) REFERENCES Customer(CustID)
);

我当前的代码确保只有拥有 CustID 的任何以前的客户可以在 ReferralID 列中(即他们告诉客户有关商店的信息。)但是,问题是没有阻止 CustID 等于同一行中的 ReferralID,这显然是不可能的。客户无法告诉自己有关商店的信息。

基本上,如何阻止 CustID 和 ReferralID 在同一行中具有相同的值?

谢谢你, 安德鲁

【问题讨论】:

    标签: mysql self-referencing-table


    【解决方案1】:

    为此,您需要一个 CHECK 约束。但是 MySQL 还没有实现 CHECK 约束,所以你可以使用触发器来代替。

    相关

    【讨论】:

    • ...虽然具有欺骗性,但允许对检查约束进行编码(为了与其他数据库兼容)——它们只是被忽略了!?
    • 是的。来自手册:“CHECK 子句被所有存储引擎解析但忽略。”
    • 嗯。我没有使用触发器的经验(刚开始这门课),但我会尝试找出一些东西。感谢您为我指明正确的方向。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 1970-01-01
    • 2021-09-10
    • 1970-01-01
    • 2012-02-29
    • 2011-02-27
    • 1970-01-01
    相关资源
    最近更新 更多