我有一个名为devices_last_insert
的表
数据库获取一些设备(大约4种不同的device_id
)的数据更新,并将它们存储在另一个表中。
在devices_last_insert
表中,我想为每个设备保存上一个时间戳。
目前,它保存了每一行,如您在此处看到的:
将数据添加到该表的触发器写在获取数据的表中:
BEGIN
INSERT INTO devices_last_insert(devices_last_insert.timestamp,
devices_last_insert.device_id)
VALUES(NEW.timestamp, NEW.device);
END
我想更改触发器,以便在带有时间戳的device_id
中不存在devices_last_insert
的情况下添加一行(原始表中的行有一个timestamp
列),如果device_id
中已经存在devices_last_insert
,则会更新时间戳。
问题在于NEW
查询中不能使用DELETE
。
答案 0 :(得分:1)
您不需要手动删除旧记录,MySQL可以为您完成繁重的工作。
您可以在device_id
上创建唯一索引(或主键),然后在重复的语法上使用插入:
INSERT INTO devices_last_insert
(devices_last_insert.timestamp, devices_last_insert.device_id)
VALUES (NEW.timestamp, NEW.device)
ON DUPLICATE KEY UPDATE timestamp = VALUES(timestamp)