0

我将在 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 个表:

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
);

请帮我。十分感谢!

4

3 回答 3

0

使用以下创建触发器

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;
|

那就是......你必须使用分隔符..

分隔符用于定义查询的结束。默认情况下它是半列(;)。这里我们使用 DELIMITER 命令来更改默认分隔符,以便我们可以使用 ';' insdie 触发器定义

于 2012-10-30T06:53:44.607 回答
0

首先更改分隔符,否则过程中的分号会破坏语法。请参阅本页中途关于在 MySQL 文档中创建过程的示例(复制如下以节省您的时间)。

mysql> delimiter //

mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    -> BEGIN
    ->   SELECT COUNT(*) INTO param1 FROM t;
    -> END//
Query OK, 0 rows affected (0.00 sec)

mysql> delimiter ;

mysql> CALL simpleproc(@a);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @a;
+------+
| @a   |
+------+
| 3    |
+------+
1 row in set (0.00 sec)

更新:也许以下...

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//
DELIMITER ;
于 2012-10-30T03:58:43.263 回答
0

看看你的 phpmyadmin 版本中是否有 DILIMITER 字段,就在 SQL 编辑器的下方。在那里设置你的分隔符,例如 - '$$',然后编写这个 SQL 代码 -

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$$

如果您的 phpmyadmin 没有此选项(它可以在旧版本上),并且如果可以使用其他工具连接到服务器,请尝试使用其他 MySQL 客户端,例如 - dbForge Studio for MySQL(免费快速版)。

于 2012-10-30T06:33:35.237 回答