У меня есть 4 таблицы:
- pacienti
- Кабинет
- тпм
- vizite.
DROP SCHEMA IF EXISTS tr;
CREATE SCHEMA IF NOT EXISTS tr;
USE tr;
CREATE TABLE IF NOT EXISTS pacienti
(
id_pac INT NOT NULL AUTO_INCREMENT PRIMARY KEY
Nume VARCHAR(40) DEFAULT 'anonim',
Prenume VARCHAR(40) DEFAULT 'anonim',
UNIQUE (Nume,Prenume)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS cabinete
(
id_cab INT NOT NULL AUTO_INCREMENT PRIMARY KEY
Denumire VARCHAR(40) DEFAULT 'nespecificat',
UNIQUE (Denumire)
) ENGINE=INNODB;
CREATE TABLE IF NOT EXISTS tmp
(
id_tmp INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
DataVizita VARCHAR(10),
OraIntrare TIME,
ComplDate DATETIME,
NumePacient VARCHAR(40) DEFAULT 'anonim',
PrenumePacient VARCHAR(40) DEFAULT 'anonim',
NumeMedic VARCHAR(40) DEFAULT 'nespecificat',
PrenumeMedic VARCHAR(40) DEFAULT 'nespecificat',
Cabinet VARCHAR(30) DEFAULT 'nespecificat'
);
CREATE TABLE IF NOT EXISTS vizite
(
id_viz INT(5) NOT NULL AUTO_INCREMENT PRIMARY KEY,
Data_viz DATETIME,
Medic_id INT(5) NOT NULL,
Pacient_id INT(5) NOT NULL,
Cabinet_id INT(5) NOT NULL,
FOREIGN KEY (`Medic_id`) REFERENCES `tr`.`medici`(`id_med`)
ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`Pacient_id`) REFERENCES `tr`.`pacienti`(`id_pac`)
ON UPDATE RESTRICT ON DELETE CASCADE,
FOREIGN KEY (`Cabinet_id`) REFERENCES `tr`.`cabinete`(`id_cab`)
ON UPDATE RESTRICT ON DELETE CASCADE
) ENGINE=INNODB;
У меня есть файл, из которого я должен импортировать данные в таблицу 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
, мне нужно выполнить некоторые операции:
Создайте триггер, который должен concat
DataVizita
и OraIntrare
в поле DATETIME (мне удалось создать функцию, которая преобразует DataVizita в правильный формат и объединяет его с OraIntrare
и помещает результат в ComplDate
из tmp
таблицы.
Вот что я уже сделал, и это работает:
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 ;
Второе, что мне нужно сделать, это заполнить таблицы pacienti
и cabinete
данными из этого файла.
И этот мне нужен, потому что я не могу понять, как это сделать: (
Извините за эту длинную презентацию, но я думал, что кому-то понадобятся все детали, чтобы понять мой вопрос.