MariaDB TRIGGER не работает с датой / временем - PullRequest
0 голосов
/ 31 марта 2020

Webinaris вставляет дату и время в таблицу MariaDB SQL через Mauti c Fomular. Поэтому у меня есть два поля с датой и временем.

Мне нужно новое поле, в котором дата и время объединяются с новым полем.

Типы полей:

webinardatum: date

webinarzeit: время

webinar_datum_38_zeit: datetime (DC2Type: datetime)

Что работает:

SELECT id, TIMESTAMP(webinardatum, webinarzeit) FROM `mau_leads` WHERE ID=40

Результат: 2020 -03-30 02: 30: 00

Также отлично работает: UPDATE mau_leads SET webinar_datum_38_zeit = TIMESTAMP(webinardatum, webinarzeit) WHERE ID=40

Обновляет объединенную дату / время в поле webinar_datum_38_zeit.

Также отлично работает : 1. CREATE DEFINER=`root`@`localhost` TRIGGER `Update_Webinar_Date_Time` BEFORE INSERT ON `mau_leads` FOR EACH ROW BEGIN SET NEW.webinar_datum_38_zeit = '2020-03-30 02:30:00'; END

в начале / конце set @report_date = '2020-03-30 02:30:00'; SET NEW.webinar_datum_38_zeit = @report_date;

в начале / конце set @report_date = cast('2013-01-17 17:18:19' as datetime); SET NEW.webinar_datum_38_zeit = @report_date;

НЕ работает:

в начале / конце ни: SET @report_date = TIMESTAMP(NEW.webinardatum, NEW.webinarzeit); SET NEW.webinar_datum_38_zeit = @report_date;

, ни:

set @report_date = cast(TIMESTAMP(NEW.webinardatum, NEW.webinarzeit) as datetime); SET NEW.webinar_datum_38_zeit = @report_date;

It´ просто не обновляется NEW.webinar_datum_38_zeit.

Даже следующее не работает: SET @Webinar = NEW.webinardatum; SET NEW.webinar_datum_38_zeit = Webinar;

Кажется, если MariaDB не может прочитать NEW.webinardatum, NEW.webinarzeit

Обновление: я создал тестовую таблицу, где работает слияние даты и времени. Использование того же триггера не работает с исходной таблицей mauti c.

CREATE TABLE `mau_leads_test` (<br> `webinardatum` date DEFAULT NULL, `webinarzeit` time DEFAULT NULL, `webinar_datum_38_zeit` datetime DEFAULT NULL COMMENT '(DC2Type:datetime)' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ROW_FORMAT=DYNAMIC;

CREATE TRIGGER `Test_Insert` BEFORE INSERT ON `mau_leads_test` FOR EACH ROW BEGIN declare report_date datetime; set report_date = cast(TIMESTAMP(NEW.webinardatum, NEW.webinarzeit) as datetime); SET NEW.webinar_datum_38_zeit = report_date; END

INSERT INTO `mau_leads_test` (`webinardatum`, `webinarzeit`, `webinar_datum_38_zeit`) VALUES ( '2020-03-31', '01:00:00', NULL);

INSERT INTO `mau_leads_test` (`webinardatum`, `webinarzeit`) VALUES ( '2020-02-17', '02:00:00');

Работает отлично. Почему он не работает с оригинальной таблицей Mauti c? Обе таблицы находятся в одной базе данных.

Я также попробовал следующие триггеры AFTER INSERT, которые тоже не работают.

UPDATE mau_leads SET webinar_datum_38_zeit = TIMESTAMP(webinardatum, webinarzeit) WHERE mau_leads.id = NEW.id;

UPDATE mau_leads SET webinar_datum_38_zeit = TIMESTAMP(webinardatum, webinarzeit) WHERE webinar_datum_38_zeit is null and webinardatum is not null and webinarzeit is NOT null;

Может ли быть транзакция / откат?

Есть идеи?

...