gpt4 book ai didi

mysql - 根据外键链接的表插入数据

转载 作者:行者123 更新时间:2023-11-29 16:31:16 24 4
gpt4 key购买 nike

我正在收集机器生成的数据。目前,我使用软件 OPC Router 通过 OPCUA 将机器数据传输到由 phpMyAdmin 管理的 MySQL 数据库中。为了提高性能并减少使用的存储,我想到以某种方式对数据库进行建模:

enter image description here

现在我问自己:
如果机器正在发送数据(例如机器名称“5264”),数据库是否可以自动将“machines”表中的相应 FK“machine_ID”作为整数输入到“machine1”中,而不是输入机器名称“5264”?

我已经尝试先将数据写入额外的表中,然后在插入后插入触发器。然后,该触发器应使用匹配的 ID(而不是全名)将每一列执行插入命令到相应的表中。在这里我失败了,因为即使我使用了 BEGIN 和 END,我也无法在一个触发器中执行多个插入命令。

我用于触发器的代码如下所示:

BEGIN
INSERT INTO products(Name)
SELECT t1.Product_Name
FROM transfer_data t1
WHERE NOT EXISTS(SELECT products.Name
FROM products t2
WHERE t2.Name = t1.Product_Name)

INSERT INTO operators
(operators.First_Name, operators.Last_Name)
SELECT t1.Operator_First_Name, t1.Operator_Last_Name
FROM transfer_data t1
WHERE NOT EXISTS(SELECT operators.First_Name, operators.Last_Name
FROM operators t2
WHERE t2.First_Name = t1.Operator_First_Name
AND t2.Last_Name = t1.Operator_Last_Name)
END;

期待听到您对我的计划的意见并希望得到一些帮助。

最佳答案

非常感谢@P.Salmon!我现在使用以下代码使其工作:

Delimiter //

Create trigger this_one after insert on transfer_data
For each row

BEGIN
INSERT INTO products(Name)
SELECT t1.Product_Name
FROM transfer_data t1
WHERE NOT EXISTS(SELECT products.Name
FROM products t2
WHERE t2.Name = t1.Product_Name);

INSERT INTO operators
(operators.First_Name, operators.Last_Name)
SELECT t1.Operator_First_Name, t1.Operator_Last_Name
FROM transfer_data t1
WHERE NOT EXISTS(SELECT operators.First_Name, operators.Last_Name
FROM operators t2
WHERE t2.First_Name = t1.Operator_First_Name
AND t2.Last_Name = t1.Operator_Last_Name);
END
//

delimiter ;

关于mysql - 根据外键链接的表插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53865179/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com