【发布时间】:2012-11-29 20:32:58
【问题描述】:
我对 MySQL 不太熟悉,但我正在尝试创建一个触发器,以便每当插入一行时,如果表中的总行数大于 10,则删除某个行。
我正在寻找的,没有触发器语法,是这样的:
IF (SELECT COUNT(*) FROM table) > 10 THEN
//do some stuff
END IF;
但是,这似乎不是可接受的语法。我该怎么做呢?
【问题讨论】:
标签: mysql sql database triggers
我对 MySQL 不太熟悉,但我正在尝试创建一个触发器,以便每当插入一行时,如果表中的总行数大于 10,则删除某个行。
我正在寻找的,没有触发器语法,是这样的:
IF (SELECT COUNT(*) FROM table) > 10 THEN
//do some stuff
END IF;
但是,这似乎不是可接受的语法。我该怎么做呢?
【问题讨论】:
标签: mysql sql database triggers
DELIMITER &&
CREATE TRIGGER trigger_name AFTER INSERT ON table_name FOR EACH ROW
BEGIN
DECLARE x INT;
SET x = (SELECT count(*) FROM table_name);
IF x > 10 THEN
DELETE FROM table_name where condition;
END IF;
END&&
DELIMITER ;
【讨论】:
; 视为结束分隔符
select count(1) into @cnt from table;
if (@cnt > 10) then
// do some stuff
end if;
你可以使用声明变量来代替@cnt
【讨论】: