Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Slip1992 Member Откуда: Сообщений: 6 |
Доброго времени суток! Помогите, пожалуйста, разобраться. Имеются две таблицы: Сотрудники и Отделы Требуется создать триггер, который при добавлении новых сотрудников будет выводить сообщение с ошибкой если сотрудник числится в отделе, в котором более 10 сотрудников. Т.е. запрет на обновление Что получилось у меня: CREATE TRIGGER TR0 ON Отделы AFTER UPDATE AS IF(SELECT Количество_сотрудников FROM inserted)>=10 BEGIN PRINT'Вы не можете добавить сотрудника в данный отдел' ROLLBACK END К сообщению приложен файл. Размер - 49Kb |
9 янв 13, 23:06 [13744184] Ответить | Цитировать Сообщить модератору |
Slip1992 Member Откуда: Сообщений: 6 |
Но данный триггер будет срабатывать и когда удаляем (не будет давать удалять) какого-либо сотрудника из отдела где было более 10 |
9 янв 13, 23:06 [13744185] Ответить | Цитировать Сообщить модератору |
Slip1992 Member Откуда: Сообщений: 6 |
триггер на обновление таблицы Отделы, когда осуществляется добавление/удаление сотрудников уже есть |
9 янв 13, 23:10 [13744197] Ответить | Цитировать Сообщить модератору |
qwerty112
Guest |
"брэхня" (с) |
||
9 янв 13, 23:19 [13744217] Ответить | Цитировать Сообщить модератору |
qwerty112
Guest |
собственно, он (триггер) и "при добавлении" срабатывать не будет ... |
||
9 янв 13, 23:21 [13744221] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
Добавляем сотрудников, а триггер почему-то на Отделы. |
9 янв 13, 23:36 [13744258] Ответить | Цитировать Сообщить модератору |
Slip1992 Member Откуда: Сообщений: 6 |
триггер срабатывает при обновлении таблицы Отделы,которая обновляется за счет другого триггера2 (как я уже писал выше) триггер2 сомюмтывает при добавлении или удалении данных из таблицы Сотрудники Я не могу разбраться с триггером, который указан в теме |
10 янв 13, 00:11 [13744330] Ответить | Цитировать Сообщить модератору |
ZVER-10 Member Откуда: Сообщений: 506 |
Slip1992, может вам лучше пользоваться INSTEAD OF а не AFTER?! |
10 янв 13, 00:20 [13744360] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
|
||
10 янв 13, 00:48 [13744451] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
У вас что, все имеют административные права на изменения свойств бд? |
||
10 янв 13, 06:56 [13744680] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
|
||||
10 янв 13, 09:26 [13744937] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
Изменение свойств БД - собственные риски эксплуатанта, если не указано иное. А вы выводы сделали из этих разборок ? |
||||
10 янв 13, 09:30 [13744962] Ответить | Цитировать Сообщить модератору |
Slip1992 Member Откуда: Сообщений: 6 |
короче, мне просто нужно добавить в данный триггер, еще одно условие его выполнения: при добавлении записей в другую таблицу (Сотрудники) я вот и не знаю, как сделать в триггере два условия |
10 янв 13, 09:32 [13744975] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9687 |
А какие выводы и из чего я их сделал, вас не касаются. |
||
10 янв 13, 09:41 [13745037] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31823 |
Просто потому, что при неубедительности ваших оправданий заказчик просто перестаёт платить деньги, без всяких "презумпций невиновности". Это даже не считая того, что писать качественные программы просто приятно :-) |
||||
10 янв 13, 09:46 [13745065] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
Я этого ни где не писал и не говорил.
Не надо так эррегировать, это был риторический вопрос. |
||||
10 янв 13, 10:45 [13745442] Ответить | Цитировать Сообщить модератору |
Slip1992 Member Откуда: Сообщений: 6 |
так и кто-нибудь случайно не подскажет мне решение моей проблемы? |
||
10 янв 13, 10:54 [13745474] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
Так ответили же - триггер на таблицу сотрудники. |
||||
10 янв 13, 10:59 [13745510] Ответить | Цитировать Сообщить модератору |
AxuliON Member Откуда: оттуда, и на лыжах Сообщений: 574 |
Slip1992, Сказали же уже! Триггер на сотрудников с группировкой.
|
||
10 янв 13, 11:19 [13745635] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31823 |
Так для начала проще обучаться программированию, сейчас весь код выглядит абсурдным, даже нечего поправить. Например, вы пишите Создать триггер, срабатывающий при обновлении существующих записей, и хотите, что бы он сработал при добавлении новых записей Или: ЕСЛИ (список из нескольких целых чисел) БОЛЬШЕ 10Как может быть "список" больше 10, непонятно. |
||||
10 янв 13, 11:46 [13745854] Ответить | Цитировать Сообщить модератору |
LSV Member [заблокирован] Откуда: Киев Сообщений: 30817 |
ХП может провести сложные проверки и грамотно информировать пользователя о проблемах, а также выполнить удаление или обновление в логически связанных таблицах. |
||
10 янв 13, 11:48 [13745865] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47065 |
Он, вообще-то, - частный случай процедуры. |
||||
10 янв 13, 11:56 [13745950] Ответить | Цитировать Сообщить модератору |
qwerty112
Guest |
извините, и, сугубо имхо, конечно, но эта фраза (выделил) звучит примерно как - "что НЕ может экскаватор, из того, что может мужик с лопатой ?" даа, наверное - всё может, только зачем он (экскаватор) - если "мужик с лопатой" справляется ? |
||||
10 янв 13, 13:42 [13746757] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47065 |
В принципе их может и не быть вовсе - простые запросы INSERT, DELETE, UPDATE, MERGE никто не отменял. А триггеры привязаны к таблице, вызываются при любых соответствующих обращениях к таблице (конечно, если их не отключили). Являются узким "бутылочным горлышком", через которое происходят манипуляции с данными таблицы. Поэтому именно в триггерах проще всего их контролировать и поддерживать. |
||||
10 янв 13, 13:50 [13746813] Ответить | Цитировать Сообщить модератору |
qwerty112
Guest |
нет, в данном, конкретном случае (задача ТС) - таких "мужиков" ровно 3-и - приём нового сотрудника в штат - вывод сотрудника из штата - перевод сотрудника внутри штата всё! какого лешего ТСа "понесло в триггерА" - это и он сам, ответить врядли сможет, только то, что задача наверняка учебная его и оправдует я не спорю, есть ситуации, когда триггер значительно "упрощает" жизнь, вот, если обратится к эпическому топику, я бы с удовольствием послушал, как ФФ...Ф предложил бы решать без триггера в этом случае
даа, здесь триггер - "красссиво" в задаче ТС - нет!
всегда стараюсь "отменить" :)
вот-вот и когда "надо" и когда "не надо"
иногда - "слишком узким" опять же прийдётся сослатся на тот топик - 8556584 имхо, более чем "жизненная" ситуация описанна ... |
||||||||||||
10 янв 13, 14:28 [13747165] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |