首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在MySQL触发器中

如果在MySQL触发器中
EN

Stack Overflow用户
提问于 2011-01-28 17:18:25
回答 4查看 13K关注 0票数 3

试图创建MySql触发器

代码语言:javascript
复制
CREATE TRIGGER updVisible AFTER UPDATE ON photos
FOR EACH ROW 
BEGIN
    IF NEW.Status = 2 THEN
        UPDATE otherTable SET IsVisible=0 WHERE PID=NEW.PID
    END IF;
END;

但我错了:

您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以便在第6行使用接近'END IF‘的正确语法。

MySQL版本:5.1.41-社区我做错了什么?

UPD1。这没什么用

代码语言:javascript
复制
DELIMITER //
CREATE TRIGGER updVisible AFTER UPDATE ON photos
FOR EACH ROW 
BEGIN
    IF NEW.Status = 2 THEN
        UPDATE otherTable SET IsVisible=0 WHERE PID=NEW.PID
    END IF
END//
DELIMETER ;

错误:

错误代码: 1064您的SQL语法出现了错误;请检查与MySQL服务器版本对应的手册,以便在第6行使用接近'END如果结束‘的正确语法。

我有根访问权并使用MySql Workbench 5.2.31CE

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-28 17:40:16

这个在我的机器里工作!

代码语言:javascript
复制
mysql> DELIMITER //
mysql> CREATE TRIGGER test1 AFTER UPDATE ON test
    -> FOR EACH ROW
    -> BEGIN
    ->     IF NEW.itemId = '2' THEN
    ->         UPDATE test1 SET col1=0 WHERE col2=NEW.`value`;
    ->     END IF;
    -> END//
Query OK, 0 rows affected (0.05 sec)

mysql> DELIMiTER ;
mysql> desc test;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| itemId | varchar(100) | YES  |     | NULL    |       |
| key    | varchar(100) | YES  |     | NULL    |       |
| value  | varchar(100) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

mysql> desc test1;
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| col1  | varchar(100) | YES  |     | NULL    |       |
| col2  | varchar(100) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql>
票数 3
EN

Stack Overflow用户

发布于 2011-01-28 17:29:40

它看起来像一个缺失的分号

代码语言:javascript
复制
PID=NEW.PID;
票数 1
EN

Stack Overflow用户

发布于 2011-01-28 17:37:26

在phpMyAdmin中,可以在SQL窗口中创建触发器。

您可能必须将分隔符设置为类似于$$的内容,而不是默认的;。您可以很容易地从SQL窗口底部更改这一点。

此外,请确保使用END命令关闭触发器块-

代码语言:javascript
复制
DELIMITER $$

CREATE TRIGGER `tutorial`.`before_delete_carts`  
     BEFORE DELETE ON `trigger_carts` FOR EACH ROW  
     BEGIN  
         DELETE FROM trigger_cart_items WHERE OLD.cart_id = cart_id;  
     END $$ 
DELIMITER ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4831113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档