我很难解释这一点,所以让我用一个例子来说明。
我有一张评论表,它看起来像这样:
CREATE TABLE comments (
id INT UNSIGNED AUTO_INCREMENT,
parent_id INT UNSIGNED,
article_id INT UNSIGNED NOT NULL,
user_id INT UNSIGNED NOT NULL,
ip VARCHAR(255) NOT NULL,
submitted_at TIMESTAMP DEFAULT NOW(),
comment TEXT,
PRIMARY KEY (id),
CONSTRAINT fk_com_parent
FOREIGN KEY (parent_id)
REFERENCES comments (id)
CONSTRAINT fk_com_article
FOREIGN KEY (article_id)
REFERENCES articles (id)
CONSTRAINT fk_com_user
FOREIGN KEY (user_id)
REFERENCES users (id)
);
现在有意义的是如果parent_id
设置了,孩子和父母应该共享相同的article_id
。
评论的答案必须在同一篇文章上。那么有没有办法抑制这种情况呢?
如果是这样,逻辑必须是当 parent_id 不是 NULL 时,记录的 arcticle_id 是 NULL。并且必须从其父项获取该记录的文章 ID。
因此,如果
parent_id
设置了,article_id
则从父记录中获取,而当前记录中的值将被忽略。