mySQL触发器语法 - 将值添加到另一个表

时间:2014-01-21 15:03:30

标签: mysql triggers

我正在试图找到一种自动化我的mysql数据库的方法。

数据库有几个表。表日志包含来自多个设备的原始日志数据(device_id,time,logs),tabele设备包含由其id标识的特定设备的更多信息,例如位置,名称和制造商。

现在我要完成以下操作:每当将新日志导入我的日志表时,我希望数据库自动检查设备ID是否已在设备表中注册。如果不是,我希望它被添加。

我认为这可以通过触发来完成。经过一些研究,我想出了以下代码,不幸的是我得到了一个1064错误:你的SQL语法有错误......

有没有人能帮助我?

CREATE TRIGGER logs_after_insert AFTER INSERT ON logs
FOR EACH ROW
BEGIN
    DECLARE amount INT;
    SET amount = SELECT COUNT (*) FROM `devices` WHERE device_id = NEW.id GROUP BY device_id;
    IF (amount = 0) THEN
        INSERT INTO devices VALUES (NEW.device_id, , , , , );
    END IF;
END

插入查询中的逗号是因为我需要手动将其他数据填入设备,现在我只想添加id而其他列是空白的。

1 个答案:

答案 0 :(得分:0)

自己找到解决方案:

CREATE TRIGGER logs_after_insert AFTER INSERT ON logs
FOR EACH ROW
BEGIN
    INSERT IGNORE INTO devices (device_id) VALUES (NEW.id);
END

可能不是最好的方法,但就我的情况而言,它的工作正常:)