我通过生产并在其上使用 mysqldump 创建了一个单独的测试数据库。当我通过复制和粘贴代码重新创建触发器时,它们无法在测试数据库上工作。TOAD 抛出“CREATED_DATE 没有默认值”错误。所以我回到生产环境并测试了触发器,它按预期工作。触发器的目标是设置日期字段的默认值,总共有 2 个,它是您所看到的变体。
从生产
CREATE DEFINER=`root`@`%` TRIGGER `iwebprod`.`CREATED_DATE` BEFORE INSERT ON iwebprod.library_record FOR EACH ROW
SET NEW.CREATED_DATE = IFNULL(NEW.CREATED_DATE, NOW());
从测试
CREATE DEFINER=`root`@`%` TRIGGER `iwebprod`.`CREATED_DATE` BEFORE INSERT ON iwebprod.library_record FOR EACH ROW
SET NEW.CREATED_DATE = IFNULL(NEW.CREATED_DATE, NOW());
有问题的 DML
INSERT INTO LIBRARY_RECORD(LIBRARY_RECORD_ID, NAME, DESCRIPTION, SOURCE, ATTACHMENT_ONLY, CONTENT_TYPE_ID, INTRANET_DISPLAY,
INTERNET_DISPLAY, ACTIVE_DATE, ARCHIVE_DATE)
VALUES ('5895', 'moowcow', 'rbgsb', 'library/oracle2mysql.exe', '0', '23', '1', '0', '30-Jan-2013', '31-Jan-2013')
我将 TOAD 用于 MySQL,如果有人能解释为什么会发生这种情况或以某种方式注意到代码的不同之处,我将不胜感激。