在MySql 5.5.27中创建触发器时出错 [英] Error when creating a trigger in MySql 5.5.27

查看:38
本文介绍了在MySql 5.5.27中创建触发器时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要在xampp中创建一个触发器.

I am going create a trigger in xampp.

CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW 
BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;

但是我有错误:

CREATE TRIGGER testref BEFORE INSERT ON test1
    FOR EACH
    ROW
    BEGIN
    INSERT INTO test2
    SET a2 = NEW.a1;


MySQL said: Documentation
#1064 - You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version
for the right syntax to use near '' at line 4 

之前,我创建了4个表:

Before, i create 4 table:

CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
  a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  b4 INT DEFAULT 0
);

请帮助我.非常感谢您!

Please help me. Thank you alot!

推荐答案

使用以下内容创建触发器

Use following for creating trigger

delimiter |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW 
BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|

也就是说,您必须使用定界符.

That is... you must use delimiter..

定界符用于定义查询的结尾.默认情况下,它是semicolumn(;).在这里,我们使用DELIMITER命令来更改默认的定界符,以便我们可以使用';'独立触发定义

Delimiter is used to define the end of the query. By default it is semicolumn(;). Here we used DELIMITER command to change the default delimiter so that we can use ';' insdie trigger definition

这篇关于在MySql 5.5.27中创建触发器时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆