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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2014, 03:19   #1
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию Триггер на Update

Здравствуйте ребята . хочу применить триггер но зависаю хочу ваши помощь .... Вот простои пример СУБД ms sql server

1. Создаю таблица
Код:
create table t1
(
 id int identity(1,1) primary key,
 naimen nvarchar(30) not null, --- сохраняем  (приема отправка )
 vrem_prixod time  default getdate(), -- Время приема
 vremia_uxoda time  -- время отправка 
);
2. При inserte в поля vrem_prixod автоматически добавляется текущее время по скольку там ограничение default getdate(),


Код:
insert into t1(naimen) values('приема')
select * from t1
/* --------------------------------------------------------------- */
3. До пустим я делаю Update
Код:
update t1 set naimen = 'отправка'  where id = 4
select * from t1
/* --------------------------------------------------------------- */
Вопрос: Я хочу написать такой логика, что когда пользователь делает такой update на это момент в поля vremia_uxoda автоматически сохранилось текущее время.....

4. Как это написать правильно ?

Код:
CREATE TRIGGER t1_Updated
   ON  t1
   AFTER UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    UPDATE t1 ........... Как здесь написать это логика ?
    IF UPDATE t1 ............ Или надо применить IF ELSE  ?
END
GO

Последний раз редактировалось xxbesoxx; 07.07.2014 в 03:22.
xxbesoxx вне форума Ответить с цитированием
Старый 07.07.2014, 04:14   #2
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Вот так обновляться все запись vremia_uxoda вставляет текущее время . Я хочу что он вставил текущее время ,! только на тот строк ! где я обновил запись
Код:
CREATE TRIGGER t1_Updated
   ON  t1
   AFTER UPDATE
AS 
if (UPDATE (naimen))
BEGIN
    UPDATE t1 set  vremia_uxoda = GETDATE();
END
GO
xxbesoxx вне форума Ответить с цитированием
Старый 07.07.2014, 04:28   #3
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

А если делаю алтер триггер вот так
Код:
alter TRIGGER t1_Updated
   ON  t1
   AFTER UPDATE
AS 
if (UPDATE (naimen))
BEGIN
    UPDATE t1 set  vremia_uxoda = GETDATE() where id= 6;
END
GO
и потом обновляю текущее запись вот так
Код:
update t1 set naimen = 'отправка'  where id = 6
select * from t1
то работает правильно .... Но как переделать это триггер так что он работал на любом строке ???
xxbesoxx вне форума Ответить с цитированием
Старый 07.07.2014, 04:37   #4
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Или как реализовать это по другому ..... Триггер не принципиально , Просто я хочу записать текущее время в поля в vremia_uxoda на тот момент когда делаю update t1 set naimen = 'отправка' where ........
xxbesoxx вне форума Ответить с цитированием
Старый 07.07.2014, 04:45   #5
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 1,136
По умолчанию

В триггере:
Код:
update f
set f.vremia_uxoda = GETDATE()
from t1 f
join inserted i on i.id = f.id
Это?

Да, там еще не забыть
Код:
FOR INSERT, UPDATE
AS
** Удача терпелива. **
Vad3333@inbox.ru

Последний раз редактировалось Vad33; 07.07.2014 в 04:55.
Vad33 вне форума Ответить с цитированием
Старый 07.07.2014, 05:02   #6
xxbesoxx
Участник клуба
 
Регистрация: 10.08.2010
Сообщений: 1,389
По умолчанию

Vad33 Огромное спасибо работает хорошо ..... Мне надо только на момент обновления .....

Код:
alter TRIGGER t1_Updated
   ON  t1
   for UPDATE
AS 
if (UPDATE (naimen))
BEGIN
    update f
	set f.vremia_uxoda = GETDATE()
	from t1 f
	join inserted i on i.id = f.id
END
GO
Еще раз СПАСИБО все работает правильно .... Тема можно закрыть
xxbesoxx вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Триггер skanku SQL, базы данных 1 13.11.2012 18:23
Триггер Babur4iK SQL, базы данных 3 08.11.2012 16:28
Триггер andresan SQL, базы данных 0 16.05.2011 16:29
Триггер Neymexa SQL, базы данных 1 01.04.2010 18:50
триггер veter_s_morya SQL, базы данных 10 06.10.2008 21:58