Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在MySQL中编写有关更新前的触发器_Mysql_Sql_Triggers_Mysql Error 1235 - Fatal编程技术网

在MySQL中编写有关更新前的触发器

在MySQL中编写有关更新前的触发器,mysql,sql,triggers,mysql-error-1235,Mysql,Sql,Triggers,Mysql Error 1235,我对触发器非常陌生,所以这是一个非常初级的问题。我只是尝试在一行更新之前,将其id、新旧值以及当前日期存储到一个新表中。我尝试了以下方法: DELIMITER // DROP TRIGGER IF EXISTS stockTrig// CREATE TRIGGER stockTrig BEFORE UPDATE ON products FOR EACH ROW BEGIN IF NEW.quantity != OLD.qua

我对触发器非常陌生,所以这是一个非常初级的问题。我只是尝试在一行更新之前,将其id、新旧值以及当前日期存储到一个新表中。我尝试了以下方法:

DELIMITER //
    DROP TRIGGER IF EXISTS stockTrig//
    CREATE TRIGGER stockTrig BEFORE UPDATE ON products
        FOR EACH ROW
        BEGIN
            IF NEW.quantity != OLD.quantity THEN
                INSERT INTO stock_log SET p_id = OLD.id, old_stock = OLD.quantity, new_stock = NEW.quantity, date = CURDATE();
            END IF;
        END//
DELIMITER;
我得到以下信息:

1235-此版本的MySQL尚不支持“一个表具有相同操作时间和事件的多个触发器”


…我不太明白。我使用的是MySQL 5.1.53,它不应该过时。这里到底出了什么问题?

我看不出你的代码有什么问题

你能用mysql命令行吗?(就像我所知道的所有其他开发人员/数据库管理员一样,他们使用模式更改?)

编辑: 您的
INSERT
语法是非正统的,但对mysql有效。通常是:

...
INSERT INTO stock_log (p_id, old_stock, new_stock, date)
    VALUES (OLD.id, OLD.quantity, NEW.quantity, CURDATE());
...

您是否已经在
产品
上设置了更新前触发器?您的触发器也有其他问题,但首先要做的是。是的,我有,但我用
SHOW触发器解决了它,因此修复了该错误,但现在我在第1行的“DELIMITER”附近发现了一些语法错误。更新了更多。当我将它粘贴到phpmyadmin中时,它说我有一些语法错误,但触发器仍然会通过并按预期运行。有什么想法吗?正如我所知,phpmyadmin实例(旧版本)不处理分隔符命令。尝试执行不带分隔符的CREATE TRIGGER语句。@Devart OK。“你每天都在学习”。我不知道mysql中insert的语法。酷。是的,这是执行此操作的另一种方式。同意“你每天都能学到东西”;-)