在 MySQL 中创建 TRIGGER 时出现问题
Problems creating TRIGGER in MySQL
我是第一次在 MYSQL workbench 中使用触发器概念,如下面的查询,
首先,我使用以下查询创建了 人 table,
CREATE TABLE people (age INT, name varchar(150));
然后我使用下面的触发器查询
DELIMITER
CREATE TRIGGER agecheck BEFORE INSERT ON raptor1_5.people FOR EACH ROW IF NEW.age < 0 THEN SET NEW.age = 0; END IF;
DELIMITER ;
但是 agecheck 触发器没有创建到 people table。当我 运行 这个查询时,它没有显示任何错误消息。
这是我的 table 图片,
更新:基于回答
标准触发器语法应为
DELIMITER //
CREATE TRIGGER agecheck BEFORE INSERT ON raptor1_5.people
FOR EACH ROW
BEGIN
IF NEW.age < 0 THEN
SET NEW.age = 0;
END IF;
END;//
DELIMITER ;
以上是当你在 mysql cli 上 运行 时,但是在 phpmyadmin 或 workbench 中检查你是否有设置分隔符的选项,如果是,选择那个并删除分隔符以上部分。
试试这个。
USE `raptor1_5`;
DELIMITER $$
DROP TRIGGER IF EXISTS raptor1_5.agecheck$$
USE `raptor1_5`$$
CREATE TRIGGER agecheck BEFORE INSERT ON people
FOR EACH ROW
BEGIN
IF NEW.age < 0 THEN
SET NEW.age = 0;
END IF;
END$$
DELIMITER ;
我是第一次在 MYSQL workbench 中使用触发器概念,如下面的查询,
首先,我使用以下查询创建了 人 table,
CREATE TABLE people (age INT, name varchar(150));
然后我使用下面的触发器查询
DELIMITER
CREATE TRIGGER agecheck BEFORE INSERT ON raptor1_5.people FOR EACH ROW IF NEW.age < 0 THEN SET NEW.age = 0; END IF;
DELIMITER ;
但是 agecheck 触发器没有创建到 people table。当我 运行 这个查询时,它没有显示任何错误消息。
这是我的 table 图片,
更新:基于回答
标准触发器语法应为
DELIMITER //
CREATE TRIGGER agecheck BEFORE INSERT ON raptor1_5.people
FOR EACH ROW
BEGIN
IF NEW.age < 0 THEN
SET NEW.age = 0;
END IF;
END;//
DELIMITER ;
以上是当你在 mysql cli 上 运行 时,但是在 phpmyadmin 或 workbench 中检查你是否有设置分隔符的选项,如果是,选择那个并删除分隔符以上部分。
试试这个。
USE `raptor1_5`;
DELIMITER $$
DROP TRIGGER IF EXISTS raptor1_5.agecheck$$
USE `raptor1_5`$$
CREATE TRIGGER agecheck BEFORE INSERT ON people
FOR EACH ROW
BEGIN
IF NEW.age < 0 THEN
SET NEW.age = 0;
END IF;
END$$
DELIMITER ;