Mysql Trigger обновляет другую таблицу после вставки в текущую таблицу - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть две таблицы.Один называется «заимствованный», а другой - «устройства».У меня есть поле в таблице устройств, которое по умолчанию установлено в 0.Я хочу, чтобы запись в таблице "заимствована" была добавлена.Что запись в таблице «Устройства» установлена ​​в 1 триггером.Именно там, где идентификатор таблицы «заимствован» = идентификатор таблицы - «Устройства».

Моя идея понять, что это было так:

BEGIN

   UPDATE `devices` 

    SET devices.borrowed = "1"

    WHERE devices.id = borrowed.id

    LIMIT 1;
END

Или

    DROP TRIGGER IF EXISTS `test`;CREATE DEFINER=`root`@`localhost` TRIGGER `test` AFTER INSERT ON `borrowed` FOR EACH ROW BEGIN UPDATE `devices` SET devices.borrowed = 1 WHERE devices.id = borrowed.id LIMIT 1; END

Мой результат заключается в том, что все записи установлены на 1, а не только на запись стот же серийный номер.С помощью команды LIMIT он только устанавливает 1 в правильное значение, но устройство с неправильным серийным номером устанавливается в 1.

1 Ответ

0 голосов
/ 25 сентября 2018

Я предполагаю, что вы используете MySQL, и вы хотите что-то вроде этого

CREATE TRIGGER trg_borrowed_insert AFTER INSERT ON borrowed
FOR EACH ROW
BEGIN
   UPDATE devices
       SET devices.borrowed = 1
       WHERE devices.id = new.id;
END;

Я не думаю, что триггеры являются хорошим способом реализации такой логики.Отношения внешнего ключа и JOIN должны быть в порядке, чтобы выяснить, какие устройства заимствованы.Если вам нужен триггер для insert, вам также нужен триггер для delete и update.

...