繁体   English   中英

用于在MySQL中更新父级的存储过程

[英]Stored procedure to update parent in MySQL

我有2个表来表示传感器及其值:

Unit:
  id
  name
  last_data

Data:
  id
  timestamp
  temperature
  unit

所以基本上我每个Unit都有多个Data行。

我想添加一个SP,因此每次插入Data行时,它都会自动更新匹配的父级中的last_data列(以指向新创建的id

pseudo code:

new_id = INSERT INTO Data (temperature, unit) VALUES (25, 1);

UPDATE Unit SET last_data = new_id WHERE id=1

不确定如何编写这样的程序...

您可以使用LAST_INSERT_ID()来获取在会话中创建的最后一条记录的ID。

因此您的伪代码将变为:

INSERT INTO Data (temperature, unit) VALUES (25, 1);
SET @new_id = LAST_INSERT_ID();
UPDATE Unit SET last_data = @new_id WHERE id=1

甚至更短:

INSERT INTO Data (temperature, unit) VALUES (25, 1);
UPDATE Unit SET last_data = LAST_INSERT_ID() WHERE id=1

https://dev.mysql.com/doc/refman/5.7/zh-CN/information-functions.html#function_last-insert-id

这可以帮助您解决问题:

INSERT INTO Data (temperature, unit) VALUES (25, 1);

这是我们的触发条件:

CREATE TRIGGER update_last_data 
    AFTER INSERT ON 'Data' for each row
begin
    SET @last_id_in_data = LAST_INSERT_ID();
    UPDATE Unit SET last_data = @last_id_in_data WHERE id=1;
END;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM