【发布时间】:2015-07-13 14:48:05
【问题描述】:
我在使用 PhpMyAdmin 时遇到了困难。 我的桌子是:
material(id_item, id_collection,...)
primarey_key(id_item, id_collection).
我想创建一个函数来防止非循环图数据库中的循环。所以我想强制 id_collection > id_item 获取新的 id_collection。
我的功能是(我在 SQL 选项卡中设置了//):
//
CREATE or REPLACE function collections_prevent_cycle()
BEGIN
DECLARE max_of_both SMALLINT;
SET max_of_both := (MAX(GREATEST(id_item, id_collection)) FROM material);
IF NOT EXISTS(SELECT id_collection FROM material where id_collection = NEW.id_collection) THEN
IF (NEW.id_item >= max_of_both) THEN SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'You may not insert items that doesnt exist';
ELSEIF(NEW.id_collection <> max_of_both + 1) THEN SIGNAL'45000'
SET MESSAGE_TEXT = 'You may not insert non stable id_collection';
END IF;
END IF;
RETURN 0;
END;
//
#1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册以获取正确的语法使用 靠近'function collections_prevent_cycle() RETURN integer BEGIN 在第 1 行声明 max_of_b'
我在搞砸声明,但无法摆脱 - 任何人都可以帮助我吗?
用 :
修复了我的第一个分隔符 pbm【问题讨论】:
-
已安装的管理员 - 似乎既是 DELIMITER 又是声明 pbm :(
标签: phpmyadmin mysql-error-1064