【发布时间】:2016-09-03 18:00:18
【问题描述】:
我正在使用 mysql 5.5.11,当我执行下面的脚本时
INSERT INTO payments(created, Amount, user, Remarks, orderid, paymethod)
VALUES('2016-09-03', 0.0, 'admin', '', 4, 'Cash');
我收到错误
SQL 错误:FUNCTION mydb.SUM 不存在。检查'函数名称 参考手册中的“解析和解析”部分
这是表架构
CREATE TABLE payments (
ID int AUTO_INCREMENT NOT NULL,
OrderID int,
Amount decimal(11,2),
Created varchar(20),
Remarks varchar(160),
user varchar(60),
PayMethod varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci,
/* Keys */
PRIMARY KEY (ID)
) ENGINE = InnoDB;
错误的原因可能是什么
这是附加到表格的触发器
BEGIN
/* Trigger text */
UPDATE Orders Set Paid =(Select SUM (Amount) From Payments AS p Where p.OrderID = Orders.ID),PayMethod =new.PayMethod WHere Orders.id = new.OrderID;
UPDATE Orders Set Bal = Total - Paid WHere Orders.id = new.OrderID;
END
【问题讨论】:
-
那张桌子上有触发器吗?
-
除了@Hamlet 所问的...
user是大多数 DBMS 中的保留字。如果您要拥有一个具有该名称的列,则每次使用它时都必须正确地对其进行转义。如果是我,我会为该列找到一个不同的名称,以免给您带来麻烦和额外的工作。 -
@HamletHakobyan,是的,我附上了触发器