Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2009, 13:28   #1
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
По умолчанию Каскадный триггер

Привет!
Есть 3 таблицы:Computer, Marka, Country. Они связаны между собой по ключевым полым таблицы Computer- marka, country. Тоесть в таблице Marka-ключевое поле marka связано с главной таблицей Computer, в которой одно из ключ. полей marka. Также связана и таблица Country.
Как сделать специальный каскадирующий триггер, который срабатывал бы на удаление, вставку и обновление в главную таблицу Computer-и добавлял или удалял соответствующие записи по ключевым полям в связанных таблицах

Код:
USE pubs
GO
IF EXISTS   (SELECT     name
                 FROM       sysobjects
                 WHERE      name = 'Obnovlenie' AND
                              type = 'TR')
DROP TRIGGER Obnovlenie
GO
CREATE TRIGGER Obnovlenie
ON Computer	
FOR INSERT
AS 
insert into Marka,Country
SELECT   *
FROM       inserted
GO
-не работает
_ares_ вне форума Ответить с цитированием
Старый 19.05.2009, 14:10   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

имхо каскадные операции по своей сути зло - при неграмотной реализации пользователь сможет удалить намного больше данных чем ожидает

а по теме - почитай по ключ.словам "on cascade delete"
и этттааа - вставка через инсерт только в одну таблицу, т.е. нужно разбивать на 2 инсерта
soleil@mmc вне форума Ответить с цитированием
Старый 19.05.2009, 22:12   #3
_ares_
Пользователь
 
Регистрация: 12.11.2007
Сообщений: 31
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
а по теме - почитай по ключ.словам "on cascade delete"
и этттааа - вставка через инсерт только в одну таблицу, т.е. нужно разбивать на 2 инсерта
по ключ словам DELETE CASCADE-- мало нарыл инфы. Нужен реальный пример этого CASCADE
_ares_ вне форума Ответить с цитированием
Старый 19.05.2009, 22:24   #4
koma_grusha
Редкий обитатель
Форумчанин
 
Аватар для koma_grusha
 
Регистрация: 08.04.2009
Сообщений: 170
По умолчанию

а что конткретно не работает? не создается триггер? или не создаются записи? у тебя что база pubs называется?

Цитата:
insert into Marka,Country
SELECT *
FROM inserted
т.е. поля во всех таблицах идентичные?
Мозг, хорошо устроенный, стоит больше, чем мозг, хорошо наполненный (Мишель Монтень)
koma_grusha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не работает триггер aquarelle SQL, базы данных 2 12.03.2009 21:42
"not null" и триггер в IBase/FB Surgeon БД в Delphi 15 10.10.2008 14:55
триггер veter_s_morya SQL, базы данных 10 06.10.2008 21:58
триггер..плиз zinnyrik БД в Delphi 4 21.05.2007 16:08
Триггер? yulia БД в Delphi 9 12.05.2007 15:03