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