我有一个名为indice_hora的表,其中有6列:
- date (pk) | Composite - agent_id (pk) | Primary Key - contagem - movimento - preenchimento - state_changes
我最近添加了一个没有默认值的state_changes列,所以现在我正尝试将所有空值更新为0。
我正在尝试运行以下代码:
update indice_hora
set state_changes = 0
where state_changes is null;
但是我遇到了这个错误:
[2019-01-25 08:55:38] [23000][1062] Duplicate entry '2019-01-25 08:55:38-0' for key 'PRIMARY'
即使我不更新任何键值,为什么也会出现此错误?
OBS 1:此表没有任何日期为'2019-01-25 08:55:38-0'的行。
OBS 2:该表主要由触发器更新:
create trigger update_indice_hora_table
after INSERT
on indice
for each row
INSERT INTO indice_hora VALUES (DATE_FORMAT(NEW.data_hora_registro, '%Y-%m-%d %H:00:00'), NEW.id_agent, NEW.contagem, NEW.mobilidade, NEW.preenchimento, 0)
ON DUPLICATE KEY UPDATE indice_hora.data = DATE_FORMAT(NEW.data_hora_registro, '%Y-%m-%d %H:00:00'),
indice_hora.id_agent = NEW.id_agent,
indice_hora.contagem = ((indice_hora.contagem + NEW.contagem) / 2),
indice_hora.movimento = ((indice_hora.movimento + NEW.mobilidade) / 2),
indice_hora.preenchimento = ((indice_hora.preenchimento + NEW.preenchimento) / 2);
编辑1:看起来像“ 2019-01-25 08:55:38-0”是我骑程序的当前时间。每次我运行脚本时,重复的条目都是当前时间。
答案 0 :(得分:0)
禁用触发器->运行更新命令->启用触发器。
1禁用触发器
ALTER TRIGGER <TRIGGER_NAME> DISABLE
2执行查询
3 EnableTrigger
ALTER TRIGGER <TRIGGER_NAME> ENABLE