У меня есть 3 оператора SQL Update.Они звонят из приложения.
1-й ОБНОВЛЕНИЕ ОБНОВЛЕНИЯ
//only update rel column
UPDATE db1.data SET rel = 'x' WHERE tID = 'some value';
2-Й ОБНОВЛЕНИЕ ОБНОВЛЕНИЯ
//here there is no endDate field
UPDATE db1.data SET action = 'some value' status = 'some value' startDate = 'some value' type = 'some value' WHERE tID = 'some value';
3-Й ОБНОВЛЕНИЕ ЗАПРОСА
//but here it is endDate
UPDATE db1.data SET action = 'some value' status = 'some value' startDate = 'some value' endDate = 'some value' type = 'some value' WHERE tID = 'some value';
И еще я занимаюсь тем, что есть еще одна база данных, которая называется db2
.Поэтому, когда db1
обновляется с использованием этих запросов на обновление, мне также необходимо обновить таблицу db2.data
.Итак, я создаю триггер, используя MySQL Workbench
.
Вот триггер,
CREATE DEFINER=`root`@`%` TRIGGER `db1`.`data_AFTER_UPDATE` AFTER UPDATE ON `data` FOR EACH ROW
BEGIN
IF NEW.rel<> OLD.rel/*= 'x'*/ THEN
UPDATE db2.data
SET rel = NEW.rel
WHERE tID = NEW.tID;
END IF;
END
Я застрял здесь с тем, как проверить, какой столбец возвращает данные.Как я могу создать Trigger для выполнения этого без получения NULL
Ошибка?
В основном, что мне нужно,
if NEW.rel <> OLD.rel run this -> UPDATE db2.data SET rel = NEW.rel WHERE tID = NEW.tID;
if data returns with this column `endDate` I need to do this -> UPDATE db1.data SET action = 'some value' status = 'some value' startDate = 'some value' endDate = 'some value' type = 'some value' WHERE tID = 'some value';
and if not returning values for `endDate` I need to run this -> UPDATE db1.data SET action = 'some value' status = 'some value' startDate = 'some value' type = 'some value' WHERE tID = 'some value';
В моем Trigger
, это только обновление 1st UPDATE Query
.Но мне нужно запустить 2nd and 3rd UPDATE Queries
также в Trigger
.Так как я могу это сделать?Есть ли какие-либо проверки, которые я могу сделать, чтобы избежать NULL Error
.Потому что, если БД обновляет только rel
, мне нужно обновить только rel
.Так как я могу узнать, что обновляет?Если БД обновляется с endDate
, мне нужно запустить 3rd UPDATE Query
.Если обновления БД без endDate
, мне нужно запустить 2rd UPDATE Query
.Это то, что мне нужно.
Мне нужно сделать все в одном триггере, используя ELSE IF
или что-нибудь лучше.
Кто-нибудь может мне помочь?Заранее спасибо.