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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2013, 21:22   #1
averardo
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 15
По умолчанию

Работаю в MS SQL Server. Нужно написать триггер для удаление записи из таблицы записи. Вот код триггера:
Код:
CREATE TRIGGER trigger_2
   ON  dbo.archive
   FOR INSERT
AS 
	DELETE FROM dbo.work
	WHERE dbo.work.id = dbo.archive.work
Не работает то место где " = dbo.archive.work". Как указать правильно что при вставки записи удалять таблицу в другой таблице с ID из ячейки work вставленной записи.

И вот еще второй вопрос. Как можно выполнить триггер до обновления записи. Есть код:
Код:
CREATE TRIGGER trigger_3
   ON  dbo.customers
   FOR UPDATE
AS 
INSERT INTO dbo.old_phone (customer, phone)
SELECT id, phone
FROM inserted
Он работает, но он вносит в новую табличку телефон который я уже обновил. А мне нужно внести код, не тот НА который я обновил а тот который я заменил. Думал сначала FOR поменять на BEFORE но это оказалось неправильно.

Последний раз редактировалось Stilet; 03.06.2013 в 22:29.
averardo вне форума Ответить с цитированием
Старый 03.06.2013, 22:28   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
до обновления
Код:
CREATE TRIGGER trigger_3
   ON  dbo.customers
   FOR UPDATE
   Before update
AS 
INSERT INTO dbo.old_phone (customer, phone)
SELECT id, phone
FROM inserted
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.06.2013, 23:16   #3
averardo
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 15
По умолчанию

Увы но при таком написании выдает ошибку... Ошибка именно в этом "Before update".
averardo вне форума Ответить с цитированием
Старый 04.06.2013, 18:45   #4
averardo
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 15
По умолчанию

Неужели никто не знает?
averardo вне форума Ответить с цитированием
Старый 04.06.2013, 19:09   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Наведите резкость на временные таблицы inserted и deleted используемые в триггерах и проблема Before отпадет сама собой. Кстати нет в синтаксисе такой возможности
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.06.2013, 23:49   #6
averardo
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 15
По умолчанию

А по поводу другого вопроса:
Код:
CREATE TRIGGER trigger_2
   ON  dbo.archive
   FOR INSERT
AS 
	DELETE FROM dbo.work
	WHERE dbo.work.id = dbo.archive.work
averardo вне форума Ответить с цитированием
Старый 05.06.2013, 00:25   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

делайте нормальную связь, выставите на ней каскадное удаление и не парьтесь с тритерами
eval вне форума Ответить с цитированием
Старый 05.06.2013, 08:50   #8
averardo
Пользователь
 
Регистрация: 26.05.2013
Сообщений: 15
По умолчанию

Это курсач... Мне в обяз нужно использовать тригеры.
averardo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Триггер в SQL Server 2005 Кристина * SQL, базы данных 2 15.05.2013 19:05
MS SQL Server: универсальный Logger сделанный как триггер Glen SQL, базы данных 8 11.03.2013 13:59
Триггер для БД на SQL Sayks Помощь студентам 1 20.04.2012 14:04
Необходимо написать приложение, которое поднимает коннект (VPN к примеру) на windows server -=TTRn=- Помощь студентам 0 30.06.2010 00:27
Необходимо написать задачу в Transact SQL Student'ochka Помощь студентам 1 24.05.2009 14:05