mysql - 在 mysql 5.0.77 中定义触发器的语法错误

标签 mysql sql triggers

CREATE TABLE `applications` (
`id` int(2) NOT NULL,
`applicationID` varchar(36) character set utf8 collate utf8_unicode_ci NOT NULL,
`applicationType` enum('M','W') character set utf8 collate utf8_unicode_ci NOT NULL,
`applicationName` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL,
`applicationPath` varchar(100) character set utf8 collate utf8_unicode_ci NOT NULL,
`isDeleted` tinyint(1) NOT NULL default '0',
`lastModified` timestamp NOT NULL default CURRENT_TIMESTAMP
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

-- -- 转储表应用程序的数据 --

 INSERT INTO `applications` (`id`, `applicationID`, `applicationType`, `applicationName`,     `applicationPath`, `isDeleted`, `lastModified`) VALUES (1, 'a49af37e-7f4c-1032-a010-   c067c39cc60b', 'W', 'workshopWorkerWeb',   'http://www.workshopworker.com/workshopWorkerLogin/workshopWorkerLogin.html', 0, '2014-08-27   15:11:46'),
(2, 'a49af5c2-7f4c-1032-a010-c067c39cc60b', 'W', 'agriMapper', '', 0, '2014-08-27 15:11:46'),
(3, 'a49af702-7f4c-1032-a010-c067c39cc60b', 'M', 'promacRegistration',  'https://play.google.com/store/apps/details?id=com.ncbaclusapromac.ncbaclusapromac', 0, '2014-08-27 15:11:46'),
(4, 'a49af838-7f4c-1032-a010-c067c39cc60b', 'M', 'eBAF', 'https://play.google.com/store/apps/details?id=com.ncbaclusapromac.eBAF', 0, '2014-08-27 15:11:46'),
(5, 'a49af996-7f4c-1032-a010-c067c39cc60b', 'M', 'extensionWorker',  'https://play.google.com/store/apps/details?id=pt.com.extensionWorker', 0, '2014-08-27 15:11:46'),
(6, 'a49afad6-7f4c-1032-a010-c067c39cc60b', 'W', 'promacAdministration', '  'http://ncbaclusapromac.com/clientLogin.html', 0, '2014-08-27 15:11:46');

DELIMITER $$
CREATE TRIGGER `applicationsUUID` BEFORE INSERT ON `applications`
FOR EACH ROW BEGIN
IF NEW.applicationID = '' THEN
SET NEW.applicationID = UUID();
END IF;
END
$$
DELIMITER ;

给出:- 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 'DELIMITER $$

附近使用的正确语法

我知道这是 DELIMITER 语法的问题,但我看不出问题出在哪里。

最佳答案

尝试:

CREATE TABLE `applications` (
   `id` int(2) NOT NULL,
   -- `applicationID` varchar(36) character set utf8 collate utf8_unicode_ci NOT NULL,
   `applicationID` varchar(39) character set utf8 collate utf8_unicode_ci NOT NULL,
   `applicationType` enum('M','W') character set utf8 collate utf8_unicode_ci NOT NULL,
   `applicationName` varchar(30) character set utf8 collate utf8_unicode_ci NOT NULL,
   `applicationPath` varchar(100) character set utf8 collate utf8_unicode_ci NOT NULL,
   `isDeleted` tinyint(1) NOT NULL default '0',
   `lastModified` timestamp NOT NULL default CURRENT_TIMESTAMP
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;

INSERT INTO `applications` (`id`, `applicationID`, `applicationType`, `applicationName`,     `applicationPath`, `isDeleted`, `lastModified`)
VALUES
(1, 'a49af37e-7f4c-1032-a010-   c067c39cc60b', 'W', 'workshopWorkerWeb',   'http://www.workshopworker.com/workshopWorkerLogin/workshopWorkerLogin.html', 0, '2014-08-27   15:11:46'),
(2, 'a49af5c2-7f4c-1032-a010-c067c39cc60b', 'W', 'agriMapper', '', 0, '2014-08-27 15:11:46'),
(3, 'a49af702-7f4c-1032-a010-c067c39cc60b', 'M', 'promacRegistration',  'https://play.google.com/store/apps/details?id=com.ncbaclusapromac.ncbaclusapromac', 0, '2014-08-27 15:11:46'),
(4, 'a49af838-7f4c-1032-a010-c067c39cc60b', 'M', 'eBAF', 'https://play.google.com/store/apps/details?id=com.ncbaclusapromac.eBAF', 0, '2014-08-27 15:11:46'),
(5, 'a49af996-7f4c-1032-a010-c067c39cc60b', 'M', 'extensionWorker',  'https://play.google.com/store/apps/details?id=pt.com.extensionWorker', 0, '2014-08-27 15:11:46'),
-- (6, 'a49afad6-7f4c-1032-a010-c067c39cc60b', 'W', 'promacAdministration', '  'http://ncbaclusapromac.com/clientLogin.html', 0, '2014-08-27 15:11:46');
(6, 'a49afad6-7f4c-1032-a010-c067c39cc60b', 'W', 'promacAdministration', 'http://ncbaclusapromac.com/clientLogin.html', 0, '2014-08-27 15:11:46');

DELIMITER $$

CREATE TRIGGER `applicationsUUID` BEFORE INSERT ON `applications`
FOR EACH ROW
BEGIN
   IF NEW.applicationID = '' THEN
      SET NEW.applicationID = UUID();
   END IF;
END$$

DELIMITER ;

关于mysql - 在 mysql 5.0.77 中定义触发器的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25671372/

相关文章:

MySQL消息系统慢查询

MySQL:日志汇总查询

php - 过滤日期order_date在其日期范围sql问题

mysql - 自定义 SQL 查询,用于以 "-"作为分隔符对值进行排序

mysql - ‘where 子句中的未知列 'difference'

mysql - 在一个查询中插入多个表

sql - 在oracle sql中连接没有外键关系的表并向结果添加一列?

google-apps-script - 简单触发器 onSelectionChange(e) 不起作用

jquery - 如何在使用 asp.net 创建动态 div(面板)后调用 jquery 方法

sql - 创建在两个表上运行的触发器