Mysql удалить тригером первую запись

aleks_lv

Новичок
Доброго дня
с праздником
не получается правильно написать тригер для удаления первой записи с таблицы,
если количество записей превышает допустимое
Код:
CREATE TABLE IF NOT EXISTS `webchat_lines` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `author` varchar(16) NOT NULL,
  `gravatar` varchar(32) NOT NULL,
  `text` varchar(255) NOT NULL,
  `ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `ts` (`ts`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8;

DELIMITER |
CREATE TRIGGER `update_test` AFTER INSERT ON `webchat_lines`
FOR EACH ROW BEGIN
  DECLARE updatecount INT;
  Set updatecount = ( SELECT count(*) FROM `webchat_lines` ;
  if updatecount=4
        then
          DELETE FROM `webchat_lines` WHERE id NOT IN (SELECT MIN(id) FROM `webchat_lines` );
        end if;
END;
подскажите ,где ошибка
 
Последнее редактирование:

Semen

Семён
скобка не закрыта, смотри сообщения об ошибках, там всё написано
 

AnrDaemon

Продвинутый новичок
скобка не закрыта, смотри сообщения об ошибках, там всё написано
Он же сказал, в каких условиях не срабатывает. Скобка скорее всего просто опечатка при переносе.
Это ответ на твой вопрос. Ты не можешь знать, сколько строк добавилось между двумя вызовами твоего триггера.
 

AnrDaemon

Продвинутый новичок
1. У вас проверяется наличие РОВНО ("=") четырёх записей в таблице.
2. Вы не можете знать, что их там никогда не бывает больше четырёх.
Проблема в знаке "равно", это же очевидно.
 

WMix

герр M:)ller
Партнер клуба
если не ошибаюсь, из триггера нельзя добавлять, удалять, обновлять записи таблицы на которую триггер подвешан
но можно event на удаление подвесить
 
Сверху