если с mysql приводит к синтаксической ошибке - PullRequest
0 голосов
/ 19 сентября 2011

Мне нужно использовать if в моем триггере mysql.Это выглядит так:

set @countentry = (SELECT count(id) as `id` FROM `tsc_page_have_wildcard` where idwildcard=1 and idpage=5);
IF  @countentry <> 0 THEN
    INSERT INTO `tsc_page_have_wildcard` (`idpage`, `idwildcard`) VALUES (@pageid, NEW.id);
END IF

При выполнении триггера я получаю: Код ошибки: 1064. У вас есть ошибка

в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса, который следует использовать рядом с 'IF @countentry <> 0 THEN

        INSERT INTO `tsc_page_have_wildcard` (`i' at line 1

Структура таблицы следующая:

CREATE TABLE IF NOT EXISTS `tsc_page_have_wildcard` (
  `id` int(11) NOT NULL auto_increment,
  `idpage` int(11) NOT NULL,
  `idwildcard` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `idpage` (`idpage`,`idwildcard`),
  KEY `idwildcard` (`idwildcard`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ;

ALTER TABLE `tsc_page_have_wildcard`
  ADD CONSTRAINT `tsc_page_have_wildcard_ibfk_1` FOREIGN KEY (`idpage`) REFERENCES `tsc_page` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `tsc_page_have_wildcard_ibfk_2` FOREIGN KEY (`idwildcard`) REFERENCES `tsc_wildcard` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

INSERT INTO `tsc_page_have_wildcard` (`id`, `idpage`, `idwildcard`) VALUES
(1, 1, 1),
(2, 1, 2),
(3, 1, 3),
(4, 1, 4),
(5, 1, 5),
(6, 41, 4),
(7, 41, 5);

Кто-нибудь знает почему, если в моем триггере не работает statment?

1 Ответ

1 голос
/ 19 сентября 2011

Этот код должен работать:

DELIMITER $$
CREATE /*!50017 DEFINER = 'root'@'localhost' */ TRIGGER `win` AFTER INSERT 
ON `tsc_page_have_wildcard` FOR EACH ROW 
BEGIN
  SET @countentry = 
  (SELECT 
    COUNT(id) AS `id` 
  FROM
    `tsc_page_have_wildcard` 
  WHERE idwildcard = 1 
    AND idpage = 5) ;
  IF @countentry <> 0 
  THEN 
  INSERT INTO `tsc_page_have_wildcard` (`idpage`, `idwildcard`) 
  VALUES
    (@pageid, NEW.id) ;
  END IF ;
END $$
DELIMITER ;

Точка с запятой (;) после END IF: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...