创建触发器查询在phpMyAdmin中工作完美,但是当我从VBA运行时失败
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建触发器查询在phpMyAdmin中工作完美,但是当我从VBA运行时失败相关的知识,希望对你有一定的参考价值。
我想从VBA(MS Access)在MariaDB(mysql)数据库中创建触发器。下面是我的代码:
DELIMITER $$
CREATE TRIGGER `updSortBy` BEFORE INSERT ON `cdevices`
FOR EACH ROW BEGIN SET @maxOrd = 0;
SELECT MAX(sortBy) INTO @maxOrd FROM cdevices WHERE levelID= NEW.levelID; SET NEW.sortBy = IF (@maxOrd IS NULL, 0, @maxOrd) + 1;
END $$
DELIMITER ;
当我粘贴phpMyAdmin时有效,但是如果从VBA运行则失败。
这是VBA中最重要的部分,我使用了ADODB连接,该连接可以与其他语句完美配合:
.CommandText = "DELIMITER $$ CREATE TRIGGER `updSortBy` BEFORE INSERT ON `cdevices` FOR EACH ROW BEGIN SET @maxOrd = 0; SELECT MAX(sortBy) INTO @maxOrd FROM cdevices WHERE levelID= NEW.levelID; SET NEW.sortBy = IF (@maxOrd IS NULL, 0, @maxOrd) + 1; END $$ DELIMITER ;"
.Execute
[当我尝试运行时,出现有关语法错误的错误:
错误号:-2147217900
错误消息:
[ma-3.1.5] [10.1.40-MariaDB]您的SQL语法有误;请检查与您的MariaDB服务器版本相对应的手册,以找到正确的语法,以在'DELIMITER $$ CREATE TRIGGER'updSortBy'附近使用,然后在第1行的'cdevices'插入行中插入']
[请帮助发现我的错。
我想从VBA(MS Access)在MariaDB(mySQL)数据库中创建触发器。下面是我的代码:DELIMITER $$在每个行开始设置在cdevices上插入cdevices之前,先创建updSortBy触发器,然后设置@maxOrd = ...
答案
将触发代码转换为单语句形式:
以上是关于创建触发器查询在phpMyAdmin中工作完美,但是当我从VBA运行时失败的主要内容,如果未能解决你的问题,请参考以下文章
没有让 SELECT COUNT 在 PHPMYADMIN 中工作 [关闭]
MultyQuery 在 phpmyadmin 中工作,在 Mysqli 中不工作,在其他服务器上工作