mysql - 3张表的复合主键异或引用

标签 mysql primary-key

有一个表格日历,可以与公司会计师相关。 日历中的一行专门属于(XOR)一位会计师OR属于一家公司。

我在日历(快照 2)上创建一个复合 PK 来引用任一表,但不能同时引用两个表。 (一个日历条目专有属于会计师公司):

快照1:

snapshot 1

快照2:

snapshot 2

我的问题是,如何正确执行此操作以保持引用完整性?

calendar --> accountants
calendar --> companies

最佳答案

据我所知,MySQL 中没有可用的限制来强制只引用公司异或会计师。

但是,您可以使用 BEFORE INSERT 和 BEFORE UPDATE 触发器来拦截可能违反约束的值,并修改它们;也许将两个引用都设置为空,偏向其中一个,设置一些“需要注意,错误的输入”字段,等等......

关于mysql - 3张表的复合主键异或引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31442030/

相关文章:

mysql - 如何在运行时在mysql查询中配置表

MySQL - 循环而

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 在 mysql 中添加外键和引用键时出现错误

php - CodeIgniter $this->db 获取最后一个主键

java - 使用来自 android 的 php 脚本和 httppost 将数据添加到在线数据库

sql - 如何获取外键的主键值

SQL:主键还是不主键?

r - 为什么 r/sqlite 需要主键?

mysql - phpMyAdmin - 导入失败 #1064 - 在“INSERT INTO”附近使用正确的语法