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

但是外键约束必须精确地引用一个表。您不能根据表的另一列中的值来声明引用不同表的外键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-条件外键约束-问答-阿里云开发者社区-阿里云相关推荐

  1. mysql count join速度慢_MySql两张百万级表关联的count效率求解? 400 报错-问答-阿里云开发者社区-阿里云...

    select count(1) from B b inner join A a on a.id = b.personid where b.code like '32%' 这样试试呢######sele ...

  2. mysql hang住_mysql 5.7不定期的hang住重启-问答-阿里云开发者社区-阿里云

    线上一台mysql 5.7.17版本实例,系统centos 6.4 ,96G内存,SSD磁盘,buffer pool 60G,buffer pool instance 8,24 CPU.实例访问情况如 ...

  3. mysql总是出现-_mysql 总是莫名其妙的关闭:报错 -问答-阿里云开发者社区-阿里云...

    CentOS MYSQL 5.6不知道为什么,MYSQL总是莫名其妙的被关闭,然后网页提示 Connect Error (1045)Access denied for user 'root'@'172 ...

  4. mysql cluster 宕机 恢复_mysql cluster 集群恢复不起来,还请大神赐教?报错-问答-阿里云开发者社区-阿里云...

    mysql cluster 集群原本使用的几乎全是内存表,后来随着数据的增长,把大的内存表迁移到磁盘表了,之后集群出现6050错误,整个集群挂掉:之后重新启动集群一直启动不起来... ----以下是集 ...

  5. mysql批量插入跟更新_Mysql批量插入和更新的性能-问答-阿里云开发者社区-阿里云...

    利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不 ...

  6. cmake mysql 参数_MySQL cmake编译时这些参数是什么意思?-问答-阿里云开发者社区-阿里云...

    一般用到的参数# -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #安装路径 # -DMYSQL_DATADIR=/usr/local/mysql/data \ # ...

  7. mysql查询关键字报错_mysql中in关键字查询时的问题? 400 报错-问答-阿里云开发者社区-阿里云...

    之前也遇到过类似的问题,就是in关键字指定的范围没有数据,会出错######改用exists呢######不行######用join 链接查询过滤一下算了######我是这么做了,但是现在我就想知道, ...

  8. mysql 繁体_mysql 插入繁体字报错?报错-问答-阿里云开发者社区-阿里云

    mysql 插入繁体字报错?报错 爱吃鱼的程序员 2020-06-22 14:09:16 87 @jfinal程序插入繁体字mysql的时候报错,数据库设置了utf8,但是依然报错,数据库,表,字段, ...

  9. mysql 指定日期条件求和_如何在mysql中按每个日期对字段进行求和-问答-阿里云开发者社区-阿里云...

    我正在尝试根据案件的日期查询QUERY总计字段罚款,何时但不成功,有解决方案吗? 我的桌子 NIP NAMA TANGGAL JENIS_KEHADIRAN DENDA 10016 Novi Iraw ...

  10. mysql大表join小表速度很慢_mysql多表join中,为什么子查询会那么慢,怎么解决-问答-阿里云开发者社区-阿里云...

    下面的sql执行后cpu100%,但是这三张join的表数据量都在2W左右,不应该啊,是不是数据库服务器配置出了问题啊.sql如下:select a.excel_id, a.rpt_id, a.acc ...

最新文章

  1. 复旦 计算机 学硕 延毕,研究生招考呈现新趋势:非全日制招生遇冷 延期毕业现象越发明显...
  2. Hibernate 连接池的三种配置方式
  3. python大学课程-利用python完成大学刷课(从0到完成的思路)
  4. java怎么创建log4_如何使用log4j记录日志
  5. java 搭建企业应用框架_溯源微服务开发体系:一位Java开发者的转型思考
  6. Bash中的位置参数和特殊参数
  7. .NET处理异常--zt
  8. SVN更新无数次后仍显示Out of date
  9. Object.create()和深拷贝
  10. 微信开发刷新网页code过期
  11. 制定自动化测试实施计划
  12. matlab-m文件常用积分函数-ode45含有时变参数用法/菜鸟理解4
  13. linux ls 配色方案,Terminal 配色方案
  14. 安装软件提示需要重启电脑的处理方法
  15. 北漂人的独白,是否有所共鸣
  16. python学员管理系统
  17. 用切片实现一个简陋的Map
  18. AAAI2022行人重识别论文汇总
  19. 二本逆袭进百度,我总结了这些经验
  20. echarts 省级地图下钻到市demo

热门文章

  1. Linux进程管理内核API函数pid_task( )---根据pid获取task_struct
  2. 交叉编译中libtool相关的问题
  3. Linux文件系统(五)---三大缓冲区之buffer块缓冲区
  4. B - 好数 51Nod - 1717
  5. item2vec详解
  6. mysql 线程内存 回收_【MySQL】InnoDB后台线程与内存缓存池
  7. centos运行jar包需要的环境_SpringBoot+Vue前后端一次打包为一个Jar包运行
  8. docker centos7_CentOS7及Docker配置中文字符集问题
  9. JS Jquery 中 的遍历
  10. ARM购HPC软件专家Allinea叫板英特尔和IBM