@ValkyrieMadness

Ошибка синтаксиса SQL?

Что не так?
CREATE TRIGGER exh_locs_check
BEFORE INSERT on exhibits
FOR EACH ROW
BEGIN
SET @exhibit_placements:= 0;
SELECT COUNT(*) into @exhibit_placements FROM exhibits
	JOIN collections_locations
	ON exhibits.id_коллекции = collections_locations.id_коллекции
	WHERE exhibits.id = new.id
    GROUP BY exhibits.id;
IF (@exhibit_placements) = 0 THEN
	SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT='Error';
	END IF;
END
5f06e55d12837261096140.png
  • Вопрос задан
  • 393 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Перед запросом измените символ конца команды, иначе первая же встреченная точка с запятой завершает оператор CREATE TRIGGER.
DELIMITER $$

CREATE TRIGGER ...
...
END$$

DELIMITER ;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ValkyrieMadness Автор вопроса
Так тоже не работает. Ошибка такая же
CREATE TRIGGER exh_locs_check
BEFORE INSERT on exhibits
FOR EACH ROW
BEGIN
DECLARE @exhibit_placements int;
SET @exhibit_placements = (SELECT COUNT(*)  FROM exhibits
	JOIN collections_locations
	ON exhibits.id_коллекции = collections_locations.id_коллекции
	WHERE exhibits.id = new.id
    GROUP BY exhibits.id);
IF (@exhibit_placements) = 0 THEN
	SIGNAL SQLSTATE '12345' SET MESSAGE_TEXT='Error';
	END IF;
END
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы