创建触发器查询在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运行时失败的主要内容,如果未能解决你的问题,请参考以下文章

查询在 PHPMyAdmin 中工作但在 PHP 中不工作

没有让 SELECT COUNT 在 PHPMYADMIN 中工作 [关闭]

MultyQuery 在 phpmyadmin 中工作,在 Mysqli 中不工作,在其他服务器上工作

Android Geolocation在模拟器中工作但不在手机中工作

Phpmyadmin 停止在 ubuntu 中工作

Mysql 查询在 Codeigniter 中返回空结果,但在本机 PHP 中工作正常