Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL2000 / 4 сообщений из 4, страница 1 из 1
04.10.2002, 14:33:09
    #32055512
Oleg_Ovchar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2000
Задача. При обновлении значения act_us в таблице logon
выполняеться тригер обновления (conect_us), который добавляет новою строку или изменяет текущую в другой таблице (jhlog) в зависимости от условия.
Вопрос. Как правильно считать даные с текущей обновленой строки в тело тригера (переменные: @code_user, @act_user)?
Тело тригера.

create trigger conect_us on dbo.logon after update
as
if update(act_us)
begin
declare @code_user int, @act_user int, @comp_name char(50)
set @code_user = code_us - ?
set @act_user = act_us - ?
set @comp_name = host_name()
if @act_user = 1
begin
insert into dbo.jhlog(code_us, comp_us) values (@code_user, @comp_name)
end
else
begin
update dbo.jhlog set dt_out = getdate() where (code_us = @code_user) and (dt_out IS NULL)
end
end
...
Рейтинг: 0 / 0
04.10.2002, 14:42:49
    #32055520
Nickolay
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2000
если это MSSQL - тогда будет:
create trigger conect_us on dbo.logon FOR update
...
Select @code_user = code_us, @act_user = act_us FROM inserted
...
Рейтинг: 0 / 0
04.10.2002, 15:10:07
    #32055542
Oleg_Ovchar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2000
Спасибо, Николай.
...
Рейтинг: 0 / 0
04.10.2002, 15:35:06
    #32055559
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS SQL2000
Просто неприлично писать триггеры, работающие только с одной записью...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create trigger conect_us on dbo.logon after update
as
if update(act_us)
begin
  insert into dbo.jhlog(code_us, comp_us) 
  select code_us, host_name()
  from inserted
  where act_us =  1 

  update dbo.jhlog 
  set dt_out = getdate() 
  where (dbo.jhlog.code_us = i.code_us) and (dbo.jhlog.dt_out IS NULL)
  from inserted i
  where i.act_us <>  1 
end
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MS SQL2000 / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]