MariaDB复制表内的行

时间:2018-12-23 23:04:53

标签: sql phpmyadmin mariadb

我有一个非常简单的表,看起来像这样:

enter image description here

它称为anni_tot,并且只有一个称为anni的字段。现在,有另一个表如下所示:

enter image description here

它称为people_emp


现在,我想在表anni_tot中插入一个新字段,所以我的表现在看起来像这样:

enter image description here

我需要完成的任务是:在表people_emp中插入所有包含上一年(2020年以前,即2019年)的数据的副本,并更新字段anni。结果应该是这样:

enter image description here

红色应该是我应该得到的。基本上,当在表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 ;

2 个答案:

答案 0 :(得分:1)

我想你想要

INSERT INTO people_emp (codice, nome, anno, comune) 
    SELECT pe.codice, pe.nome, 2020, pe.comune
    FROM people_emp pe
    WHERE pe.anno = 2019;

当在第一张表中添加新行时,此逻辑可以包含在触发器中。

答案 1 :(得分:1)

我相信这样可以帮助您

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 ;