Laravel中跨两个MySQL Schema创建Pivot表关联的可行性咨询
跨Schema创建关联中间表并添加外键的可行性
完全可以在Schema B中创建传统的关联中间表(即你所说的Pivot表),并添加指向Schema A中categories表的外键——MySQL原生支持跨Schema的外键关联。
具体实现要点
- 明确指定Schema前缀:创建中间表时,要给关联表加上对应的Schema名称,避免歧义。示例SQL如下:
CREATE TABLE B.category_customer ( customer_id INT NOT NULL, category_id INT NOT NULL, PRIMARY KEY (customer_id, category_id), -- 关联Schema B的customers表 FOREIGN KEY (customer_id) REFERENCES B.customers(id) ON DELETE CASCADE ON UPDATE CASCADE, -- 关联Schema A的categories表 FOREIGN KEY (category_id) REFERENCES A.categories(id) ON DELETE CASCADE ON UPDATE CASCADE ); - 权限要求:执行建表操作的数据库用户,需要同时拥有Schema A的
REFERENCES权限(针对A.categories表),以及Schema B的表创建、修改权限。 - 字段匹配规则:外键字段的数据类型、长度、非空属性必须和被关联表的主键字段完全一致,否则外键约束创建会失败。
- 引擎限制:只有InnoDB引擎支持外键约束,所以中间表和被关联的
categories、customers表都要使用InnoDB引擎(MySQL 5.5及以后版本默认就是该引擎,仍建议确认)。
内容的提问来源于stack exchange,提问作者Andrea Verrecchia
相关产品推荐
相关产品推荐

