简体   繁体   English

MySQL基本触发器-不起作用

[英]MySQL basic trigger - not working

I'm trying to create following trigger: 我正在尝试创建以下触发器:

CREATE TRIGGER clean
AFTER INSERT ON `mecze_druzyny`
begin
DELETE * FROM bramki;
END;
DELIMITER ;

Which should be ran just after following: 应该在执行以下操作后运行:

$sql2 = "INSERT INTO mecze_druzyny (id_druzyny, id_meczu, gospodarz) VALUES (
        :team2, 
        :lastmatch, 
        :gospodarz)";

$stmt = $db->prepare($sql2);
$stmt->bindParam(':team2', $id2, PDO::PARAM_INT);       
$stmt->bindParam(':lastmatch', $last_match, PDO::PARAM_INT); 
$stmt->bindParam(':gospodarz', $a=0, PDO::PARAM_STR);
$stmt->execute(); 

Unfortunately I'm getting an error: 不幸的是我遇到一个错误:

1064 - You have an error in your SQL syntax; 1064-您的SQL语法有误; check the manual that corresponds to your MySQL server version for the right syntax to use near 'begin DELETE * FROM bramki' at line 3 检查与您的MySQL服务器版本相对应的手册,以在第3行的'begin DELETE * FROM bramki'附近使用正确的语法

It's an error with your delete syntax. 您的删除语法有误。

Get rid of the * so you're left with 摆脱*,让您留下

DELETE FROM bramki

A typical delete will be in the format 典型的删除将采用以下格式

DELETE FROM TableName WHERE ... -- the WHERE clause is optional here DELETE FROM TableName WHERE ... WHERE子句在此处是可选的

Add Delimiters to make it correct. 添加定界符以使其正确。 Here is the correct syntax to do so: 这是正确的语法:

DELIMITER //

CREATE TRIGGER clean
AFTER INSERT
   ON mecze_druzyny FOR EACH ROW

BEGIN

DELETE  FROM bramki;

END; //

DELIMITER ;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM