|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.05.2012, 14:54 | #1 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Реализация и работа с триггерами
Здравствуйте! Ради спортивного интереса разбираюсь с реализацией триггеров в SQL и передо мной встала огромная проблема.
База создается с помощью следующего SQL-запроса: Код:
Вставляем в таблицу "Сотрудники" строку с помощью запроса: Код:
Код:
Теперь доходят руки до применения триггера. Пишу код: Код:
Конфликт инструкции UPDATE с ограничением REFERENCE "Relationship21". Конфликт произошел в базе данных "12", таблица "dbo.Группы пользователей", column 'ФИО_админа'. Выполнение данной инструкции было прервано.". Такое чувство, что не срабатывает триггер. Ладно, запускаю в режиме отладки предоставленный код(F11) и наблюдаю, что инструкция прерывается уже на первой строчке(на строке "UPDATE dbo.[Сотрудники]"), т.е. даже до SET не доходит!!! Подскажите пожалуйста, что не так в моей базе, каким образом нужно изменить предоставленный триггер, чтобы он делал то, что я от него ожидал(при изменении таблицы "Сотрудники" изменял соответствующим образом таблицу "Группы пользователей")? Еще раз повторю, что разбираюсь с реализацией триггеров и прекрасно понимаю, что в данном случае можно просто изменить тип связи на Cascade и все заработает без них. Кроме желания научиться писать триггеры, создать данную тему меня побудили чисто практические интересы. Посмотрите на выделенную в коде определения БД строку, обратите внимание откуда берется поле [ФИО_админа]. Если заметили, то получается "прямая циклическая связь" между таблицами(таблица "Сотрудники" связана с таблицей "Группы пользователей", а "Группы пользователей" с таблицей "Сотрудники").
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
03.05.2012, 15:45 | #2 |
Форумчанин
Регистрация: 26.03.2012
Сообщений: 665
|
Доходит до SET. Оттого и ошибка.
|
03.05.2012, 16:11 | #3 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Чего-чего, можно по-подробнее и по-яснее?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
04.05.2012, 07:10 | #4 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Исправил свои ошибки:
1)неправильный тип связи был установлен между таблицами; 2)триггер надо было писать по другому. Если кому-то будет интересно, то вот SQL-запрос для создания корректной БД с требуемыми параметрами: Код:
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
реализация в QT | navolo4ka | Qt и кроссплатформенное программирование С/С++ | 0 | 10.02.2012 15:39 |
Лабораторная работа. Реализация алгоритмов выбора и поиска | BilliBong | Помощь студентам | 2 | 21.12.2011 01:59 |
Лабораторная работа. Реализация одного из методов оптимизации | MadLow | Фриланс | 3 | 11.12.2011 19:04 |
Реализация двух потоков, работа с буфером, механизм семафоров (С++ или Delphi) | shoonya | Помощь студентам | 0 | 05.04.2010 14:08 |
Работа с триггерами | Vinas | БД в Delphi | 2 | 04.12.2007 23:45 |