我在插入新行时尝试创建触发器以更新表的CREATED_DATE字段,但最终会破坏Java应用程序。
基本上我有一个NMS在发生警报时写入MySql服务器。我创建了以下触发器,因为Java应用程序没有将时间戳应用于警报创建(即使有一个字段):
CREATE TRIGGER alarm_timestamp AFTER INSERT on Alarm_Details FOR EACH ROW UPDATE Alarm_Details SET CREATED_DATE = NOW() WHERE ID = NEW.ID;
执行此触发后,警报永远不会写入表格。然后我放下触发器,它们立即再次工作。
我编写触发器的方式有问题吗?我惊讶于Sql server中的触发器阻止了应用程序提交插入查询。
我现在尝试使用以下内容向列添加默认值:
alter table Alarm_Details add constraint df_alarm_time default NOW() for CREATED_DATE;
我在CREATED_DATE的默认NOW()附近遇到语法错误。'
我也尝试过:
ALTER TABLE Alarm_Details ALTER CREATED_DATE SET DEFAULT NOW();
它不像NOW,CURRENT_TIMESTAMP或其他任何东西。该列设置为键入datetime。
我正在使用MySql 5.5.25。