簡體   English   中英

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM