插入或更新之前的错误

时间:2017-10-26 09:04:54

标签: mysql sql database rdbms database-trigger

我是dbms中的新查询,所以如果有人能够弄清楚应该在这里做什么。另外,我正在使用Mysql。

代码:

-> create trigger age_trigger before insert or update of age on employee
-> for each row
-> when( new.age <25)
-> begin
-> select 'Age can not be less than 25'
-> end;

错误:

  

错误1064(42000):您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在(每个行的员工附近使用'或更新年龄时使用的语法)   new.age&lt; 25)开始在第1行选择'年龄c'

2 个答案:

答案 0 :(得分:1)

您无法提出自己的语法:)

查看手册:CREATE TRIGGER Syntax

您无法指定多个trigger_events。您需要单独的插入和更新触发器。这个of age也没有业务。

总而言之,你在那里尝试做的事情可以在MySQL中完成(google for SIGNAL,如果你坚持的话),但最好的做法是将这种逻辑放在应用程序层中。不要把这样的逻辑放在数据库中。

答案 1 :(得分:0)

以下是实施BEFORE INSERT以获得所需结果的选项之一。

CREATE TRIGGER age_trigger
BEFORE INSERT ON table1
FOR EACH ROW 
BEGIN 
IF NEW.age < 25 
THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Age can not be less than 25'; 
END IF; 
END;

类似的语法可用于before update触发器。

<强> DEMO