Mysql 触发触发器时,将数据从一个表插入另一个表

Mysql 触发触发器时,将数据从一个表插入另一个表,mysql,triggers,Mysql,Triggers,我有4张桌子: 帕森蒂 细木工 tmp 维兹特。 我有一个文件,必须从中将数据导入tmp表。 文件*.txt包含以下字段: DataVizita | OraIntrare | NumePacient | PrenumePacient | NumeMedic | PrenumeMedic | Cabinet -------------------------------------------------------------------------------------------- 22/

我有4张桌子:

帕森蒂 细木工 tmp 维兹特。 我有一个文件,必须从中将数据导入tmp表。 文件*.txt包含以下字段:

DataVizita | OraIntrare | NumePacient | PrenumePacient | NumeMedic | PrenumeMedic | Cabinet
--------------------------------------------------------------------------------------------
22/04/2005 | 01:52:34   | Huruiala    |Carmen Alexandra| Garbeata  |  Panait      |   1
05/12/2005 | 04:16:02   | Schornig    |     Petre      | Rusu      | Dragos Mihai |   2
07/11/2004 | 11:24:27   | Graur       |Alexandra-Cris. | Soarece   | Dan-Cristian |   4
07/05/2008 | 06:35:44   | Rudnitchi   |     Marian     | Galescu   |George Valentin|  5
 .
 .
 .
 etc…
在tmp表中进行导入之后/之前,我必须执行一些操作:

创建一个触发器,该触发器必须将DataVizita和OraIntrare连接到一个DATETIME字段中。我成功地创建了一个函数,该函数将DataVizita转换为正确的格式,并将其与OraIntrare连接起来,并将结果放在tmp表的ComplDate中

以下是我已经做过的事情,它是有效的: 我要做的第二件事是用这个文件中的数据填充pacienti和cabinete表

这个我需要它,因为我不知道怎么做:


很抱歉做了这么长时间的演示,但我想有人需要所有的细节才能理解我的问题。

我意识到这其实很简单:。最后一个触发器应如下所示:

DROP TRIGGER IF EXISTS upd_date;

DELIMITER $$

CREATE TRIGGER upd_date BEFORE INSERT ON tmp
FOR EACH ROW 
BEGIN

  SET new.ComplDate=formdate(new.DataVizita,new.OraIntrare);

  INSERT INTO pacienti(nume,prenume) VALUES(new.NumePacient,new.PrenumePacient)
  ON DUPLICATE KEY UPDATE nume=new.NumePacient, prenume=new.PrenumePacient;

  INSERT INTO cabinete(Denumire) VALUES(new.Cabinet)
  ON DUPLICATE KEY UPDATE Denumire=new.Cabinet;


END$$

DELIMITER ;
希望这对别人有帮助

CREATE FUNCTION formdate(ziua VARCHAR(10), timpul TIME)RETURNS DATETIME       
DERMINISTIC    
RETURN 
 CONCAT (DATE_FORMAT(STR_TO_DATE(ziua, '%d/%m/%Y' ) , '%Y-%m-%d' ),' ',timpul);

DELIMITER $$
CREATE TRIGGER upd_date BEFORE INSERT ON tmp
FOR EACH ROW
BEGIN
      SET new.ComplDate = formdate(new.DataVizita,new.OraIntrare);
END$$
DELIMITER ;
DROP TRIGGER IF EXISTS upd_date;

DELIMITER $$

CREATE TRIGGER upd_date BEFORE INSERT ON tmp
FOR EACH ROW 
BEGIN

  SET new.ComplDate=formdate(new.DataVizita,new.OraIntrare);

  INSERT INTO pacienti(nume,prenume) VALUES(new.NumePacient,new.PrenumePacient)
  ON DUPLICATE KEY UPDATE nume=new.NumePacient, prenume=new.PrenumePacient;

  INSERT INTO cabinete(Denumire) VALUES(new.Cabinet)
  ON DUPLICATE KEY UPDATE Denumire=new.Cabinet;


END$$

DELIMITER ;