Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 22:56   #1
VAVILON17
 
Регистрация: 07.12.2010
Сообщений: 5
По умолчанию Sql. Триггер

Доброго времени суток!
Помогите, пожалуйста, разобраться. Имеются две таблицы: Сотрудники и Отделы
Требуется создать триггер, который при добавлении новых сотрудников будет выводить сообщение с ошибкой если сотрудник числится в отделе, в котором более 10 сотрудников. Т.е. запрет на обновление
Что получилось у меня:
Код:
CREATE TRIGGER TR0
ON Отделы
AFTER UPDATE AS
IF(SELECT Количество_сотрудников FROM inserted)>=10
BEGIN
PRINT'Вы не можете добавить сотрудника в данный отдел'
ROLLBACK 
END
Но данный триггер будет срабатывать и когда удаляем (не будет давать удалять) какого-либо сотрудника из отдела где было более 10
Изображения
Тип файла: jpg Безымянный.JPG (49.2 Кб, 78 просмотров)
VAVILON17 вне форума Ответить с цитированием
Старый 09.01.2013, 23:04   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
при добавлении новых сотрудников
AFTER UPDATE означает, что срабатывает только для команды UPDATE. Для INSERT и DELETE он работать не будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.01.2013, 23:10   #3
VAVILON17
 
Регистрация: 07.12.2010
Сообщений: 5
По умолчанию

Ну правильно он и срабатывает, когда обновляется таблица Отделы
Ой, я забыл добавить триггер на обновление таблицв Отделы, когда осуществляется добавление/удаление сотрудников уже есть
VAVILON17 вне форума Ответить с цитированием
Старый 09.01.2013, 23:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
и добавлении новых сотрудников
Добавление обычно командой INSERT делается. 100 раз вдумчиво прочитайте пост #2 и разницу уловите между обновлением таблицы и обновлением, вставкой и удалением записи таблицы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.01.2013, 00:21   #5
VAVILON17
 
Регистрация: 07.12.2010
Сообщений: 5
По умолчанию

триггер срабатывает при обновлении таблицы Отделы,которая обновляется за счет другого триггера2 (как я уже писал выше) триггер2 сробатывает при добавлении или удалении данных из таблицы Сотрудники

Я не могу разобраться с триггером, который указан в теме
VAVILON17 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Триггер skanku SQL, базы данных 1 13.11.2012 18:23
Триггер Babur4iK SQL, базы данных 3 08.11.2012 16:28
Триггер для БД на SQL Sayks Помощь студентам 1 20.04.2012 14:04
Триггер? yulia БД в Delphi 9 12.05.2007 15:03