[英]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.