失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云

mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云

时间:2018-09-02 15:02:24

相关推荐

mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云

您正在尝试进行一种称为“ 多态关联”的设计。即,外键可以引用几个相关表中的任何表中的行。

但是外键约束必须精确地引用一个表。您不能根据表的另一列中的值来声明引用不同表的外键Comments。这将违反关系数据库设计的一些规则。

更好的解决方案是使注释引用某种“超表”。

CREATE TABLE Commentable ( id SERIAL PRIMARY KEY );

CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, foreign_id INT NOT NULL, ... FOREIGN KEY (foreign_id) REFERENCES Commentable(id) ); 您的每种内容类型都将被视为此超表的子类型。这类似于接口的面向对象的概念。

CREATE TABLE BlogPosts ( blogpost_id INT PRIMARY KEY, -- notice this is not auto-generated ... FOREIGN KEY (blogpost_id) REFERENCES Commentable(id) );

CREATE TABLE UserPictures ( userpicture_id INT PRIMARY KEY, -- notice this is not auto-generated ... FOREIGN KEY (userpicture_id) REFERENCES Commentable(id) ); 必须先插入新行才能生成新的伪密钥ID ,然后才能在BlogPosts或中UserPictures插入行Commentable。然后,您可以在将内容插入到相应的子类型表中时使用该生成的ID。

一旦完成所有这些操作,就可以依靠引用完整性约束。来源:stack overflow

如果觉得《mysql 外键约束条件_MySQL-条件外键约束-问答-阿里云开发者社区-阿里云》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。