首页 > 解决方案 > MySQL - 如何修复函数创建错误 1418

问题描述

我正在使用 mysqlWorkbench

我已经按照我的导师提供的示例工作和其他用户的建议进行了操作,但现在在尝试创建函数时收到 1418 错误,如下所示:

错误代码:1418。此函数在其声明中没有 DETERMINISTIC、NO SQL 或 READS SQL DATA,并且启用了二进制日志记录(您可能希望使用不太安全的 log_bin_trust_function_creators 变量)0.00069 秒

功能如下:

DELIMITER £
CREATE FUNCTION Calc(ReferenceNumber INTEGER)
RETURNS INTEGER

BEGIN 
DECLARE NUMCATS INTEGER;
    SELECT SUM(BOOKCAT.Ref = ReferenceNumber) INTO NUMCATS
    FROM CATTERY.BOOKCAT;
    RETURN NUMCATS;
END £
DELIMITER ;

select calc(7);

让我知道我做错了什么以及如何纠正它,谢谢。

标签: mysqlsqlsumaggregate-functionssql-function

解决方案


错误信息很清楚。您需要在函数定义中添加提及的关键字之一以使其有效。

考虑:

DELIMITER £
CREATE FUNCTION Calc(ReferenceNumber INTEGER)
RETURNS INTEGER
DETERMINISTIC
BEGIN 
DECLARE NUMCATS INTEGER;
    SELECT SUM(BOOKCAT.Ref = ReferenceNumber) INTO NUMCATS
    FROM CATTERY.BOOKCAT;
    RETURN NUMCATS;
END £
DELIMITER ;

DB Fiddle 上的演示


推荐阅读