[英]Inserting rows in one table with values from another table in a loop with MariaDB
[英]MariaDB copy rows inside table
我有一個非常簡單的表,看起來像這樣:
它稱為anni_tot
,並且具有一個稱為anni
字段。 現在,還有另一個表如下所示:
它稱為people_emp
。
現在,我想在表anni_tot
插入一個新字段,因此我的表現在看起來像這樣:
我需要完成的任務是:在表people_emp
插入包含上一年(2020年之前,即2019年)的所有那些數據的副本,並更新字段anni
。 結果應該是這樣的:
紅色是我應該得到的。 基本上,當在表anni
添加新的年份時,我需要在people_emp
中復制所有具有year = year-1的數據,並將該字段更新為當前年份。
我可以通過php來做到這一點,但是很難維護。 我正在嘗試使用觸發器來執行此操作,但是我被卡住了。
我可以這樣做,但是我的問題是我現在知道如何檢索people_emp中的行數據。 任何想法?
DELIMITER //
CREATE TRIGGER nuovo_anno
AFTER INSERT ON anni
FOR EACH ROW
BEGIN
INSERT INTO `people_emp` (`codice`, `nome`, `anno`, `comune`) VALUES ('0', '0', '0', '0');
END; //
DELIMITER ;
我想你要:
INSERT INTO people_emp (codice, nome, anno, comune)
SELECT pe.codice, pe.nome, 2020, pe.comune
FROM people_emp pe
WHERE pe.anno = 2019;
當在第一張表中添加新行時,此邏輯可以包含在觸發器中。
我相信這樣的事情對您有幫助
DELIMITER //
CREATE TRIGGER nuovo_anno
AFTER INSERT ON anni
FOR EACH ROW
BEGIN
INSERT INTO `people_emp` (`codice`, `nome`, `anno`, `comune`)
SELECT `codice`, `nome`, new.anni, `comune`
FROM `people_emp` where anno = new.anni -1;
END; //
DELIMITER ;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.