Laravel 中两个不同数据库之间的匹配 ID
Posted
技术标签:
【中文标题】Laravel 中两个不同数据库之间的匹配 ID【英文标题】:Match ID between two different databases in Laravel 【发布时间】:2020-03-30 21:15:51 【问题描述】:我想试试如何在 Laravel 中匹配两个不同的数据库。
我使用的是 5.7 版本的 Laravel。
为了简化我的数据库,假设一个表在 DB1 中称为 Employee,而另一个表在 DB2 中称为 Worker。
两个表中的主键是应该匹配的 ID。
如果 Laravel 不允许这样做,我也愿意知道如何在 mysql 中进行匹配。
【问题讨论】:
我有点困惑——Laravel 是一个 php 框架。这不是 MySQL 的问题吗? @Nelles 如果我可以在 Laravel 中处理它,我想知道该怎么做。如果不能,我也有可能在mysql中尝试一下 【参考方案1】:引用自这个答案here
您需要管理跨数据库的引用约束 使用触发器。 ***************** 基本上你创建一个插入、更新触发器来验证主键表中的键是否存在。如果钥匙 不存在然后恢复插入或更新,然后处理 例外。
例子:
Create Trigger dbo.MyTableTrigger ON dbo.MyTable, After Insert, Update As Begin If NOT Exists(select PK from OtherDB.dbo.TableName where PK in (Select FK from inserted) BEGIN -- Handle the Referential Error Here END END
已编辑:只是为了澄清。这不是执行参照完整性的最佳方法。理想情况下你会想要两张桌子 在同一个数据库中,但如果那是不可能的。那么上面是一个 为您解决的潜在问题。
正如引用的答案中提到的,最好的方法是将表放在同一个数据库中。
如果你能做到这一点,那么只需在它们之间添加一个foreign key
:
FOREIGN KEY constraint
是用于将两个表链接在一起的键。
FOREIGN KEY
是一个表中的一个字段(或字段集合),它引用另一个表中的 PRIMARY KEY
。
CREATE TABLE Orders (
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);
因此,在此示例中,column
名为 PersonID
位于 table
名为 Orders
将通过 foreign key
链接到名为 PersonID
的 column
位于 table
名为 Persons
。 /p>
阅读更多here 或here
【讨论】:
以上是关于Laravel 中两个不同数据库之间的匹配 ID的主要内容,如果未能解决你的问题,请参考以下文章