Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.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_Triggers - Fatal编程技术网

Mysql 表中的乘法触发器

Mysql 表中的乘法触发器,mysql,triggers,Mysql,Triggers,我有一张salesOrderItems表: soItemID INT(11) PK salesOrderID INT(11) productID INT(11) cost DECIMAL(7,2) qty TINYINT(2) extendedCost DECIMAL(8,2) 通过PHP,用户将看到一个表单,以输入productID(通过下拉菜单),然后该选

我有一张salesOrderItems表:

soItemID           INT(11)         PK
salesOrderID       INT(11)
productID          INT(11)
cost               DECIMAL(7,2)
qty                TINYINT(2)
extendedCost       DECIMAL(8,2)
通过PHP,用户将看到一个表单,以输入productID(通过下拉菜单),然后该选择填充成本字段。然后用户输入数量<代码>扩展成本在表单上不可见

我想要的是一个触发器,它只需自动计算/插入
extendedCost
(即乘以成本x数量)并填充
extendedCost
,但我得到了1064个错误

这是扳机-我到底错过了什么???我发誓我已经做了20次了:

DELIMITER $$

DROP TRIGGER IF EXISTS EXTENDEDCOST $$

CREATE TRIGGER EXTENDEDCOST AFTER INSERT ON salesOrderItems FOR EACH ROW BEGIN

    UPDATE salesOrderItems
    SET extendedCost = (cost * qty)
    WHERE soItemID = NEW.soItemID;

END $$

DELIMITER ;
结果:

ERROR 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 '-db' at line 1

SQL Statement:

USE <my db/schema>



ERROR: Error when running failback script. Details follow.



ERROR 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 '-db' at line 1

SQL Statement:

USE <my db/schema>
错误1064:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以获取第1行中使用的接近'-db'的正确语法
SQL语句:
使用
错误:运行故障回复脚本时出错。详情如下。
错误1064:您的SQL语法有错误;检查与MySQL服务器版本相对应的手册,以获取第1行中使用的接近'-db'的正确语法
SQL语句:
使用
我确信这是件愚蠢的事,但它让我发疯,我完全被卡住了,需要额外的眼睛


提前谢谢大家

既然您试图插入一个计算值,为什么要在插入之前执行额外的更新而不设置触发时间:


请参见此答案

错误在别处,消息抱怨出现了“use…”语句,您可能只是缺少了数据库名称周围的一些反勾号。在选择数据库后在phpmyadmin中执行此查询不是直接的我认为是一样的-use error…第1行。。。。但我的命令一点也不奇怪。我没有加载phpmyadmin,所以我无法尝试..我正在使用workbench。
CREATE TRIGGER EXTENDEDCOST BEFORE INSERT ON salesOrderItems FOR EACH ROW BEGIN
  SET NEW.extendedCost = NEW.cost * NEW.qty
END $$