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;
подскажите ,где ошибка
 
Последнее редактирование:
скобка не закрыта, смотри сообщения об ошибках, там всё написано
 
скобка не закрыта, смотри сообщения об ошибках, там всё написано
Он же сказал, в каких условиях не срабатывает. Скобка скорее всего просто опечатка при переносе.
Это ответ на твой вопрос. Ты не можешь знать, сколько строк добавилось между двумя вызовами твоего триггера.
 
1. У вас проверяется наличие РОВНО ("=") четырёх записей в таблице.
2. Вы не можете знать, что их там никогда не бывает больше четырёх.
Проблема в знаке "равно", это же очевидно.
 
если не ошибаюсь, из триггера нельзя добавлять, удалять, обновлять записи таблицы на которую триггер подвешан
но можно event на удаление подвесить
 
Сверху