2014-01-21 27 views
0

我试图想出一个办法来自动化我的MySQL数据库。MySQL的触发器语法 - 增值到另一个表

数据库有几个表。表日志包含来自若干设备(DEVICE_ID,时间,日志)和tabele设备包含进一步的信息以通过将其识别的特定设备的ID,例如位置,名称和制造商的原始日志数据。

现在我要实现以下目标:每当新的日志导入到我的日志表我希望数据库全自动检查是否将设备ID的设备表已经注册。如果不是,我希望它被添加。

我认为这可以用触发器来实现。一些研究,我想出了HTHE下面的代码后,不幸的是我得到一个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和其他列是空白。

回答

0

由我自己找到了解决办法:

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

可能不是最好的方式做到这一点,但我的情况下,它工作得很好:)