我通过生产和使用mysqldump创建了一个单独的测试数据库。当我通过复制和粘贴代码重新创建触发器时,它们无法在测试数据库上工作。 TOAD抛出'CREATED_DATE没有默认值'错误。所以我回到生产并测试了触发器,它按预期工作。触发器的目标是设置日期字段的默认值,共有2个,它是您所看到的变体。
FROM PRODUCTION
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());
FROM TEST
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 for MySQL,如果有人能够解释为什么会发生这种情况或以某种方式注意到代码的不同之处,我会很感激。
答案 0 :(得分:0)
这可能是因为您没有为NULL = YES
设置CREATED_DATE
(声明CREATED_DATE
可能是null
){ {1}}表
但是当您插入 LIBRARY_RECORD
时,您没有插入LIBRARY_RECORD
你应插入 CREATED_DATE
或允许CREATED_DATE
拥有CREATED_DATE
值。