Синхронизация двух строк из разных таблиц в одной базе данных MySQL - PullRequest
0 голосов
/ 07 января 2019

У меня есть таблица с именем clients, в этой таблице есть два важных столбца; id и client. У меня есть вторичная таблица в той же базе данных с именем calendar. Я действительно хочу, чтобы два столбца id и client в таблице calendar синхронизировались с столбцами в таблице client.

Сейчас я использую этот PHP для выполнения этого в MySQL:

INSERT IGNORE INTO calendar (id, client) SELECT id, client FROM clients;

Есть ли лучший способ выполнить эту задачу? Может быть, встроенная функция в MySQL, которую я пропустил или что-то в этом роде?

1 Ответ

0 голосов
/ 07 января 2019

Использовать триггеры: триггер MySQL - это объект базы данных, связанный с таблицей. Он будет активирован при выполнении определенного действия для таблицы.

Триггер может быть выполнен при запуске одного из следующих операторов MySQL для таблицы: INSERT, UPDATE и DELETE и может быть вызван до или после события.

Вы можете сделать триггер, когда вставляете или обновляете строку в основной таблице и вносите изменения в другую таблицу

Пример:

DELIMITER $$

CREATE TRIGGER my_sync_trigger 
AFTER INSERT ON `clients` for each row
begin
INSERT INTO calender (id,client)
Values (new.id, new.client);
END$$

DELIMITER ;

«новый» означает новое значение, вставленное в таблицу клиентов. То же значение будет вставлено в столбец идентификатора и клиента в календаре.

Примечание: одиночные кавычки удаляются из имени таблицы , потому что кавычки фактически делают его строковым литералом вместо правильного идентификатора. Команда DELIMITER изменит окончание каждого оператора с ";" в «$$», чтобы MySQL не путали с «;» внутри и снаружи курка

Создайте аналогичные триггеры для обновления и удалите также

Простое руководство для примеров и синтаксиса: http://www.mysqltutorial.org/create-the-first-trigger-in-mysql.aspx

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