0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 32

Ошибка триггера (как избежать предварительной вставки?)

16.11.2014, 09:18. Показов 2517. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Имеется таблица, в которую вставляются данные о перемещении музейных предметов.
Перемещение(Дата сдачи, дата получения, код предмета, код выставки)
При вставке данных в таблицу триггер проверяет, не находится ли какой либо предмет на какой-либо выставке в указанную дату(это проверяется функцией, которая должна вернуть "На складе" - тогда вставляются данные).
Так вот, при вставке данных триггер выводит сообщение, что предмет на выставке, причем показывает те данные, которые я вставляю.
То есть данные уже вставились в таблицу и он это выводит, а потом транзакция откатывается.
Как сделать так, что бы вставляемые данные изначально не попали в таблицу,что бы их не выводила функция?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2014, 09:18
Ответы с готовыми решениями:

создание jk триггера с предварительной установкой/сбросом
нужен код на vhdl для jk триггера, {ссылка удалена}

ошибка STOP 0x00000050, как избежать?
После автоматического обновления только что установленной семерки с СП1 при запуске вот такая ошибка STOP 0x00000050 После...

Ошибка #IND00. Как избежать деления на ноль?
Есть такая программа #include <clocale> #include <cstdio> #include <math.h> double fact(int n) { double p=1; for (int...

4
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,271
16.11.2014, 12:34
В чём заключается ошибка триггера?
Какого триггера?
0
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 32
16.11.2014, 14:22  [ТС]
Цитата Сообщение от iap Посмотреть сообщение
В чём заключается ошибка триггера?
Какого триггера?
У таблицы Перемещение существует триггер, который проверяет перед вставкой, находится ли предмет в Музее, т.е он проверяет все записи таблицы по данному предмету на заданную дату, и если дата нигде не встретилась, то предмет в музее.
Ошибка в том, что триггер видит данные, которые я вставляю, то есть запись уже помещена в таблицу и он выводит, что предмет находится на этой выставке.
Нужно сначала проверить данные без помещения в таблицу и если предмет в музее, то передать его. А получается наоборот: Данные вставляются, в триггере функция выводит, что предмет на выставке(на которую его отправил только что при вставке), и транзакция откатывается.
Смысл: Как осуществить вставку данных только после проверки триггером условия.
P.S Код не выкладываю, т.к функция, возращающая положение предмета, ссылается на другую (много скриптов)
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,271
16.11.2014, 14:58
Цитата Сообщение от Morozow Посмотреть сообщение
У таблицы Перемещение существует триггер, который проверяет перед вставкой, находится ли предмет в Музее, т.е он проверяет все записи таблицы по данному предмету на заданную дату, и если дата нигде не встретилась, то предмет в музее.
Ошибка в том, что триггер видит данные, которые я вставляю, то есть запись уже помещена в таблицу и он выводит, что предмет находится на этой выставке.
Нужно сначала проверить данные без помещения в таблицу и если предмет в музее, то передать его. А получается наоборот: Данные вставляются, в триггере функция выводит, что предмет на выставке(на которую его отправил только что при вставке), и транзакция откатывается.
Смысл: Как осуществить вставку данных только после проверки триггером условия.
P.S Код не выкладываю, т.к функция, возращающая положение предмета, ссылается на другую (много скриптов)
Невозможно больше читать эту прозу.
Здесь не литературный кружок.
Не будете ли так любезны писать на языке Transact-SQL?

Если получается не так, как Вы хотите, означает ли это, что имеет место ошибка сервера?
Скорее всего это Ваша ошибка, доложу я Вам!
1
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
17.11.2014, 05:34
Morozow, зачем вы используете триггеры, если вы даже не стали разбираться с тем, как они работают? Проверяли бы ваши условия непосредственно перед вставкой, а не в триггере.
Цитата Сообщение от MSDN
FOR | AFTER

Тип AFTER указывает, что триггер DML срабатывает только после успешного выполнения всех операций в инструкции SQL, запускаемой триггером. Все каскадные действия и проверки ограничений, на которые имеется ссылка, должны быть успешно завершены, прежде чем триггер сработает.

Если единственным заданным ключевым словом является FOR, аргумент AFTER используется по умолчанию.

Триггеры AFTER не могут быть определены на представлениях.


INSTEAD OF


Указывает, что триггер DML срабатывает вместо инструкции SQL, используемой триггером, переопределяя таким образом действия выполняемой инструкции триггера. Аргумент INSTEAD OF не может быть указан для триггеров DDL или триггеров входа.

На каждую инструкцию INSERT, UPDATE или DELETE в таблице или представлении может быть определено не более одного триггера INSTEAD OF. Однако можно определить представления на представлениях, где у каждого представления есть собственный триггер INSTEAD OF.

Использование триггеров INSTEAD OF не допускается в поддерживающих обновление представлениях, которые используют параметр WITH CHECK OPTION. SQL Server вызывает ошибку, если триггер INSTEAD OF добавляется к поддерживающему обновление представлению с параметром WITH CHECK OPTION. Пользователь должен удалить этот параметр при помощи инструкции ALTER VIEW перед определением триггера INSTEAD OF.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2014, 05:34
Помогаю со студенческими работами здесь

Как убрать ограничения вставки iframe (для вставки видео)?
Подскажите как на dle 10.3 убрать ограничения вставки Iframe(для вставки видео)

Ошибка триггера обработчика событий
Добрый день! Есть такая разметка <TabControl ItemsSource="{Binding Collect}" SelectedItem="{Binding...

Ошибка при выполнении триггера
Создала триггер. Когда пытаюсь занести строку в таблицу COMPUTERS, выскакивает ошибка: Сообщение 512, уровень 16, состояние 1, процедура...

Ошибка при выполнении триггера
Существует такая проблема... Есть SQL-версия 1С. Хочется сделать автоматический обмен данными между двумя аналогичными базами посредством...

Ошибка при создании триггера
не могу понять , что от меня хочет mysql. ввожу данный триггер: delimiter // create trigger ins_stud before insert on Student ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
Сериализация и десериализация данных на Python
py-thonny 15.05.2025
Сериализация — это своего рода "замораживание" объектов. Вы берёте живой, динамический объект из памяти и превращаете его в статичную строку или поток байтов. А десериализация выполняет обратный. . .
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru