簡體   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