Совпадение идентификатора между двумя разными базами данных в Laravel - PullRequest
2 голосов
/ 31 марта 2020

Я хотел бы попытаться сопоставить две разные базы данных в Laravel.

Я использую Laravel в версии 5.7.

Чтобы упростить мои базы данных, скажем, таблица называется Employee в DB1 , а другая таблица называется Worker в DB2 .

Первичным ключом в обеих таблицах является ID, который должен совпадать.

Если Laravel не позволяет этого, я также хочу знать, как соответствовать в mySql.

1 Ответ

0 голосов
/ 31 марта 2020

Цитируется из этого ответа здесь

Вам потребуется управлять ссылочным ограничением для баз данных с помощью триггера. ***************** По сути, вы создаете триггер вставки и обновления, чтобы проверить наличие ключа в таблице первичного ключа. Если ключ не существует, верните вставку или обновление, а затем обработайте исключение.

Пример:

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 - это ключ, используемый для связывания двух таблиц.

A 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 до column с именем PersonID, расположенным в table с именем Persons.

Подробнее здесь или здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...