【问题标题】:Match ID between two different databases in LaravelLaravel 中两个不同数据库之间的匹配 ID
【发布时间】:2020-03-30 21:15:51
【问题描述】:

我想试试如何在 Laravel 中匹配两个不同的数据库。

我使用的是 5.7 版本的 Laravel。

为了简化我的数据库,假设一个表在 DB1 中称为 Employee,而另一个表在 DB2 中称为 Worker。

两个表中的主键是应该匹配的 ID。

如果 Laravel 不允许这样做,我也愿意知道如何在 mySql 中进行匹配。

【问题讨论】:

  • 我有点困惑——Laravel 是一个 PHP 框架。这不是 MySQL 的问题吗?
  • @Nelles 如果我可以在 Laravel 中处理它,我想知道该怎么做。如果不能,我也有可能在mysql中尝试一下

标签: mysql database laravel


【解决方案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 链接到名为 PersonIDcolumn 位于 table 名为 Persons。 /p>

阅读更多herehere

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-15
    • 2018-10-20
    • 2020-12-02
    • 2022-09-28
    • 1970-01-01
    • 2017-09-06
    • 2023-03-10
    • 2015-07-25
    相关资源
    最近更新 更多