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

Как проверить работу триггера

22.05.2013, 15:18. Показов 15811. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток!! Помогите новичку!! Написала код триггера, запустился без ошибок. Но где проверить его? Преподавателю нужен скрин, что выдается ошибка. Где изменить стоимость на 0?
Код:

CREATE TRIGGER TRIG

ON CHET

AFTER update

AS

BEGIN

SET NOCOUNT ON;

IF (SELECT STOIMOST FROM INSERTED)<0

PRINT'НЕЛЬЗЯ ВСТАВЛЯТЬ ЗАПИСЬ С ОТРИЦАТЕЛЬНОЙ СТОИМОСТЬЮ'

ROLLBACK

END
GO
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2013, 15:18
Ответы с готовыми решениями:

Как проверить работу триггеров?
Помогите пожалуйста с проверкой работы двух триггеров? CREATE TRIGGER update_1 ON AFTER UPDATE AS BEGIN SET NOCOUNT ON; IF...

Как проанализировать работу J-K триггера?
Не знаю как проанализировать работу схем. В файлах элемент 2И-не и J-K триггер. Не понятно куда и что подавать...

Как проверить столкновение триггера без OnTriggerEnter?
доброго времени суток, у меня в функции update есть цикл. Он перемещает объект, и нужно проверять столкновение его тригера с коллайдером...

9
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
22.05.2013, 15:50
1. Зачем там нужен ON CHET?
2. Уверены, что триггер должен быть с типом AFTER, a не INSTEAD OF (хотя допускаю, что в обоих случая будет работать).
3. Логическое условие в IF задано не верно. С левой стороны табличное выражение (с одним столбцом), а с правой стороны скалярное значение - "0". Сравнивать такие величины тоже самое, что сравнивать кг и литры.
4. Нет обращения к табличкам deleted и inserted, что указывает на несвязанность запроса с триггером для таблички.
5. Нафига в конце триггера ROLLBACK?

Проверить триггер можно написав запрос на обновление, для любой из тестовых записей в таблице.
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
22.05.2013, 20:59
T-SQL
1
2
3
4
5
6
7
8
9
10
11
CREATE TRIGGER TRIG ON CHET
AFTER update
AS
BEGIN
    SET NOCOUNT ON;
    IF EXISTS(SELECT * FROM inserted WHERE STOIMOST<0) BEGIN
        PRINT'НЕЛЬЗЯ ВСТАВЛЯТЬ ЗАПИСЬ С ОТРИЦАТЕЛЬНОЙ СТОИМОСТЬЮ'
        ROLLBACK
    END
END
GO
T-SQL
1
2
update chet set STOIMOST=10 where ...
update chet set STOIMOST=-20 where ...
1
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
23.05.2013, 01:32
Я бы лучше не ответил.
В exists после select лучше ставить 1 (мелочь конечно но "пару" байт сэкономит).

p.s. так и не понял для чего ON CHET в триггере.
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
23.05.2013, 02:00
на какую таблицу вешать триггер)
1
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
23.05.2013, 09:33
Цитата Сообщение от _katon_ Посмотреть сообщение
В exists после select лучше ставить 1 (мелочь конечно но "пару" байт сэкономит).
Что имеется в виду?
Можно поподробнее?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
23.05.2013, 09:39
я так понимаю имелось ввиду
T-SQL
1
exists(select 1 FROM inserted WHERE STOIMOST<0)
хотя про "пару байт" тоже не понял.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
23.05.2013, 12:59
Человек имел ввиду, что если писать в EXISTS 1, а не *, то теоретически будет скэономлено пара байт за счет того, что вместо набора полей вернется всего одно целое значение 1. Человек просто не знает, что EXISTS вообще не выбирает данные из подзапроса, который ему передается. EXISTS просто смотрит, должен ли запрос вернуть какое-либо количество строк или нет. Даже подзапрос "SELECT CAST('asdf' AS INT), 1 / 0", в котором в каждом возвращаемом значении содержится по ошибке, в EXISTS'е отработает корректно.
1
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
23.05.2013, 20:55
Цитата Сообщение от kodv Посмотреть сообщение
Человек имел ввиду, что если писать в EXISTS 1, а не *, то теоретически будет скэономлено пара байт за счет того, что вместо набора полей вернется всего одно целое значение 1. Человек просто не знает, что EXISTS вообще не выбирает данные из подзапроса, который ему передается. EXISTS просто смотрит, должен ли запрос вернуть какое-либо количество строк или нет. Даже подзапрос "SELECT CAST('asdf' AS INT), 1 / 0", в котором в каждом возвращаемом значении содержится по ошибке, в EXISTS'е отработает корректно.
Как приятно ощущать себя ЧЕЛОВЕКОМ )))
Обычно-то я пишу EXISTS(select NULL from ... )
0
 Аватар для _katon_
414 / 265 / 25
Регистрация: 03.10.2011
Сообщений: 1,094
24.05.2013, 15:51
Да! Человеком себя чувствовать приятно. Я обычно всегда пишу в EXISTS после SELECT цифру "1" (про деление на нуль я как-то и подзабыл: Создание запроса). kodv прав насчет того, что я имел ввиду и подозреваю, что прав насчет того что EXISTS просто проверяет на существование (погляжу задокументировано ли это на msdn).
P.S. Сори, что долго не отписывался был занят.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.05.2013, 15:51
Помогаю со студенческими работами здесь

Как проверить прикосновение триггера к коллайдеру без Rigidbody?
Как проверить прикосновение триггера к коллайдеру без Rigidbody? То есть прикосновение статичного триггера к статичному коллайдеру.

Создание класса, моделирующего работу RS-триггера
Здравствуйте! Помогите пожалуйста с заданием.. Создать класс RS_trigger, моделирующий работу R-S триггера. Триггер принимает логическое...

Как пошагово проверить работу?
Ставлю точку останова, а что дальше? В меню Debug не работает. помогите пожалуйста. Не знаю.

Как проверить работу многопользовательского приложения?
Всем привет. Пишу дипломную работу. Нужно создать многопользовательское приложение, которое работает внутри одной организации...

Как проверить работу кулера на процессоре
как проверить работу кулера на процессоре snmp C#? Где можно достать MIB для Windows и его описание?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru