SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 09.05.2012 18:25:09

like2dev
Участник
Зарегистрирован: 27.04.2010
Сообщений: 18

Проблемма с тригером

Есть таблица консультаций


CREATE TABLE `consultation` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `date_admission` timestamp NULL DEFAULT NULL,
  `duration` time DEFAULT NULL,
  `recomendation` text,
  `patient_id` int(11) DEFAULT NULL,
  `personal_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
 

Таблица статистики

CREATE TABLE `statistic` (
  `personal_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `consultation_count` int(11) DEFAULT NULL,
  `total_time_consultation` time DEFAULT NULL,
  `pacient_count` int(11) DEFAULT NULL,
  PRIMARY KEY (`personal_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
 

Создаю тригер, который при вставке в таблицу консультаций обновляет статистику, но почему-то не работает sad

DELIMITER //
CREATE TRIGGER consultation_insert AFTER INSERT ON `hospital`.`consultation`
FOR EACH ROW
BEGIN
    SET @pacient_count = doctor_patient_count(NEW.personal_id);
    INSERT INTO `hospital`.`statistic` (id,consultation_count,total_time_consultation,pacient_count,personal_id) VALUES(NULL,1,NEW.duration,@pacient_count,NEW.personal_id)
    ON DUPLICATE KEY
    UPDATE consultation_count = consultation_count + 1 AND total_time_consultation = ADDTIME(total_time_consultation, NEW.duration) AND pacient_count = @pacient_count;
END //
 

Отредактированно like2dev (09.05.2012 18:30:54)

Неактивен

 

#2 09.05.2012 18:43:33

like2dev
Участник
Зарегистрирован: 27.04.2010
Сообщений: 18

Re: Проблемма с тригером

Сам исправился smile



DELIMITER //
CREATE TRIGGER consultation_insert AFTER INSERT ON `hospital`.`consultation`
FOR EACH ROW
BEGIN
    SET @p_count = doctor_patient_count(NEW.personal_id);
    INSERT INTO `hospital`.`statistic` (personal_id,consultation_count,total_time_consultation,pacient_count) VALUES(NEW.personal_id,1,NEW.duration,@p_count)
    ON DUPLICATE KEY
    UPDATE consultation_count = consultation_count + 1, total_time_consultation = ADDTIME(total_time_consultation, NEW.duration), pacient_count = @p_count;
END //

 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson