Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
mingaraev

Триггер неправильно отрабатывает запрос

31.03.2011, 08:12. Показов 1378. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! У меня появилась следующая проблема - триггер не проверяет условие и всегда возвращяет одно и то же значение
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
USE [Biblioteka]
GO
ALTER TRIGGER Udalenie /*Триггер, который запрещает выписывать читателя из библиотеки, если у него на руках книги*/
ON Chitatel
FOR DELETE
AS
BEGIN
/*Объявление временной переменной для сохранения удаляемого читателя*/
DECLARE @Bilet VARCHAR(50)
/*Получение значения удаляемого читателя*/
SELECT @Bilet=Deleted.Num_chit_bl
FROM Chitatel, Deleted
WHERE Chitatel.Num_chit_bl=Deleted.Num_chit_bl
/*Проверка, есть ли у читателя книги на руках*/
IF EXISTS (SELECT* FROM Vudacha
WHERE Num_chit_bl=@Bilet AND Data_vozvrat IS NULL)
               BEGIN
                   ROLLBACK TRANSACTION
                   PRINT 'Нельзя удалить этого читателя, так как у него есть не сданные книги.'
 
END
ELSE 
PRINT 'Удален ' 
END
вот структурв таблиц
http://www.imget.ru/images/201... DkcvBf.jpg
вот еще насторожило при выполнении запроса
SQL
1
DELETE FROM Chitatel WHERE Num_chit_bl='1006p'
(1006p-номер читательского билета, который попадает под условие Data_vozvrat is not null, т.е. должен быть удален), на который должен откликнутся триггер не появляется значение
http://www.imget.ru/images/201... mm4s4M.jpg
не могу понять почему все таки он не работает как следует. Буду благодарен за любую помощь.
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.03.2011, 08:12
Ответы с готовыми решениями:

Хранимая процедура неправильно отрабатывает
Добрый день! Работаю в SQL Server 2005, запускаю хранимую процедуру, о она вставляет последнюю запись курсора 2 раза вместо одного....

Триггер и запрос
Здравствуйте. Помогите пожалуйста сделать несколько задач. Нельзя удалить должность, если есть сотрудники занимающие данную должность. ...

Неправильно отрабатывает запрос при условии что текстовое поле Is Null
Добрый вечер, есть запрос который делает выборку данных с таблицы при условии что текстовое поле Is not Null. Само поле...

2
 Аватар для Kdn
307 / 165 / 25
Регистрация: 07.02.2011
Сообщений: 319
31.03.2011, 10:19
Лучший ответ Сообщение было отмечено как решение

Решение

mingaraev, Получается что ты уже удалил запись и получаешь удаляемого пользователя не правильно.
SQL
1
2
3
SELECT @Bilet=Deleted.Num_chit_bl
FROM Chitatel, Deleted
WHERE Chitatel.Num_chit_bl=Deleted.Num_chit_bl
Здесь уже не существует читателя Chitatel.Num_chit_bl=Deleted.Num_chit_bl

можно получить удаляемого просто как:
SQL
1
SELECT @Bilet=Num_chit_bl FROM Deleted
В итоге нужно сделать так:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
USE [Biblioteka]
GO
ALTER TRIGGER Udalenie /*Триггер, который запрещает выписывать читателя из библиотеки, если у него на руках книги*/
ON Chitatel
FOR DELETE
AS
BEGIN
/*Объявление временной переменной для сохранения удаляемого читателя*/
DECLARE @Bilet VARCHAR(50)
/*Получение значения удаляемого читателя*/
SELECT @Bilet=Num_chit_bl FROM Deleted
/*Проверка, есть ли у читателя книги на руках*/
IF EXISTS (SELECT* FROM Vudacha
WHERE Num_chit_bl=@Bilet AND Data_vozvrat IS NULL)
               BEGIN
                   ROLLBACK TRANSACTION
                   PRINT 'Нельзя удалить этого читателя, так как у него есть не сданные книги.'
 
END
ELSE 
PRINT 'Удален ' 
END
Есть один момент. Триггер твой будет работать только при условии того, что удаляется одна строка. Если в запросе будут удалятся несколько строк, то будет ошибка.
1
mingaraev
31.03.2011, 17:54
Огромнейшее челоческое спасибо! Теперь понял принцип и переделал все триггеры
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2011, 17:54
Помогаю со студенческими работами здесь

Страно отрабатывает триггер
СУБД: firebird 2.1 Начальная проблема: Наткнулся, что очень долго происходит обновление записи в таблице (8 000 Fetches). Условие...

Не отрабатывает триггер Done в jQuery fileupload
Доброго всем времени суток! Есть небольшой загрузчик фотографий: $('#uploadPhotos').fileupload({ url: url, dataType: 'json',...

Неправильно отрабатывает ЕСЛИ
Добрый день! Помогите пожалуйста разобраться с формулой. Есть 2 типа серийных номеров: Y694000741 5300583141

Неправильно отрабатывает условие If
Здраствуйте уважаумые программисты!! Есть такой Код : #include <vcl.h> #pragma hdrstop #include "Unit1.h" ...

оператор continue неправильно отрабатывает
В коде ниже 2 цикла do-while и тот, что выше, принимаю за первый. Вопрос в том, что, почему оператор continue пре первом же выполнении...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru