SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 20.02.2016 16:02:37

Julia Pasynkova
Участник
Зарегистрирован: 20.02.2016
Сообщений: 2

Нужно создать триггер

Здравствуйте.
У меня есть две таблицы: sotr - сотрудники и otdely - отделы. В таблице сотрудников у каждого сотрудника указана зарплата (поле называется oklad), а в таблице отделы есть фонд зарплат (fondzarp). Нужно написать триггер, чтобы при добавлении или изменении, если сумма зарплат работников превышает фонд зарплат, то выдавать информационное сообщение и не давать изменять или добавлять строку с неправильным значением. Такое некое ограничение по вводу данных.
Проблема в том, что я с созданием триггеров никогда не сталкивалась. В целом синтаксис их написания мне понятен, не могу применить конкретно к данной задаче... помогите, пожалуйста.

Неактивен

 

#2 20.02.2016 17:46:50

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Нужно создать триггер

о каком информационном сообщении идет речь?

что касается прерывания:
с 5.5 есть SIGNAL
ранее вызывать ошибку, например, обращаясь к несуществующей таблице

Неактивен

 

#3 22.02.2016 12:36:37

Julia Pasynkova
Участник
Зарегистрирован: 20.02.2016
Сообщений: 2

Re: Нужно создать триггер

Вот есть код, но он не работает:

CREATE EXCEPTION trouble 'Error';
 
SET TERM !! ;
CREATE TRIGGER check_fond FOR sotr
BEFORE UPDATE AS
BEGIN
SELECT SUM(oklad) INTO sum_okl FROM sotr;
SELECT fondzarp INTO fz FROM otdely;
 
sum_okl := sum_okl - OLD.oklad +NEW.oklad;
IF (sum_okl > fz ) THEN
EXCEPTION trouble ;
endif;
 
END !!
SET TERM ; !!

Неактивен

 

#4 22.02.2016 12:46:41

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2419

Re: Нужно создать триггер

Попробуйте лучше сигнал кинуть. и посмотрите тут


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

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