Как создать триггер в Google Cloud SQL базы данных экземпляра

У меня проблема с созданием триггера в моей базе данных. У меня есть экземпляр MySQL второго поколения с базой данных (имя: тест) в моем облаке Google SQL.

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

CREATE TRIGGER date_overlap_insert_start_date
BEFORE INSERT ON driver_operation
FOR EACH ROW 
BEGIN
  if exists(
            select 1
            from driver_operation
            where nif = NEW.nif
            and (NEW.start_date > start_Date and NEW.start_date < end_Date)) then
               signal sqlstate '45000' SET MESSAGE_TEXT = 'Overlaps with existing data';
  end if;
END;

Я получаю следующую ошибку: Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '' в строке 10

Есть ли кто-нибудь, кто может помочь мне в этом? Этот триггер предназначен для предотвращения наложения полей даты.

1 ответ

Решение

У меня была такая же проблема сегодня. Это просто из-за того, что экземпляр sql облака просматривает каждую точку с запятой в качестве конца оператора, поэтому я могу только предполагать, что он пытается выполнить каждый раз, когда встречается с ним.

Попробуйте создать свой триггер с помощью:

/*!50003 CREATE*/ /*!50003 TRIGGER date_overlap_insert_start_date
BEFORE INSERT ON driver_operation
FOR EACH ROW 
BEGIN
  if exists(
        select 1
        from driver_operation
        where nif = NEW.nif
        and (NEW.start_date > start_Date and NEW.start_date < end_Date)) 
then
           signal sqlstate '45000' SET MESSAGE_TEXT = 'Overlaps with 
existing data';
end if;
END */

отредактировано, чтобы исправить мой синтаксис. Отсутствовала точка с запятой.

Что касается Google Cloud Platform, важно перейти к конфигурации вашего экземпляра, то есть "Изменить конфигурацию", затем перейти в "Флаги" и убедиться, что для параметра "log_bin_trust_function_creators" установлено значение "on". Это решит проблемы с созданием триггеров GCP, а также позволит вам создавать триггеры в MySQL Workbench CE 8.0 без сбоев.

Другие вопросы по тегам