Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите с триггером  [new]
Sonic-X
Member

Откуда: Гродно
Сообщений: 50
Всем привет, помогите разобраться почему не робит правильно триггер.
CREATE TRIGGER trStatusAct
ON dbo.ACTS
AFTER INSERT, UPDATE
AS
BEGIN
  SET NOCOUNT ON
  DECLARE @NUM_ACT bigint,-- Номер акта который закрываем
          @ST_ACT bit,-- состояние акта открыт/закрыт (0- открыт, 1- закрыт)
          @CLOSE_DATE datetime;-- дата закрытия акта
  SET @NUM_ACT     = (SELECT NUMBER_ACT FROM INSERTED)
  SET @ST_ACT      = (SELECT STATUS_ACT FROM INSERTED)
  SET @CLOSE_DATE  = (SELECT CLOSING_DATE FROM INSERTED)
  IF @ST_ACT = 0
   BEGIN 
    UPDATE ACTS
    SET CLOSING_DATE = NULL -- убираем дату закрытия
    WHERE NUMBER_ACT = @NUM_ACT
   END
  ELSE
   BEGIN
    IF @CLOSE_DATE = NULL -- если закрыт и при этом там пустое поле даты закрытия
    UPDATE ACTS
    SET CLOSING_DATE = GETDATE() -- устанавливаем дату закрытия
    WHERE NUMBER_ACT = @NUM_ACT
   END
END
GO

снимаю галку в редакторе дата убирается- все Ок, ставлю ниче не происходит, если убрать проверку, тогда дату нельзя изменить, все время вставляется текущая, где туплю?
20 сен 14, 01:40    [16598919]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером  [new]
aleks2
Guest
CREATE TRIGGER trStatusAct
ON dbo.ACTS
AFTER INSERT, UPDATE
AS
BEGIN
  SET NOCOUNT ON

 UPDATE a SET CLOSING_DATE = case a.STATUS_ACT 
                                   when 0 then NULL 
                                   else getdate() 
                             end 
      from dbo.ACTS a inner join INSERTED i on i.NUMBER_ACT = a.NUMBER_ACT
      where ( a.STATUS_ACT = 0 and a.CLOSING_DATE is not null )
         or ( a.STATUS_ACT = 1 and a.CLOSING_DATE is null );
END
GO
20 сен 14, 07:07    [16599062]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с триггером  [new]
Sonic-X
Member

Откуда: Гродно
Сообщений: 50
aleks2


Спасибо Вам, все работает как и задумывалось.
20 сен 14, 10:27    [16599196]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить