Форум: "Начинающим";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2010.09.19;
Скачать: [xml.tar.bz2];




Вниз

mssql, опять торможу с триггером 


12 ©   (2010-06-23 17:15) [0]

пишу в триггере
---
 insert into rnrTest    --для проверки
 select
     R.*
 from
     rnrRequest R
     join inserted i on R.IdRequest = i.RequestId
 where i.NoSubscr = 1
 
 update R                --что надо сделать
 set
    R.StatusId = -100
 from
    rnrRequest R
    join inserted i on R.IdRequest = i.RequestId
 where i.NoSubscr = 1

-------

делаем запрос

select
 T.IdRequest, R.StatusId
from
 rnrTest T
 join rnrRequest R on R.IdRequest = T.IdRequest

с результатом
51 0

почему не
51 -100
?



12 ©   (2010-06-23 17:51) [1]

весь триггер

ALTER TRIGGER [dbo].[rnrAlignmentUpdate_TRGR]
  ON  [dbo].[rnrAlignment]
  AFTER UPDATE
AS
BEGIN
IF ( trigger_nestlevel() > 1) Return;
 
if Exists(select inserted.Id from inserted where inserted.Subscr = 1)
 update rnrAlignment
 set  datatime = GetDate()
 where Id in (select inserted.Id from inserted where inserted.Subscr = 1)
if Exists(select inserted.Id from inserted where inserted.Subscr = 0)
 update rnrAlignment
 set  datatime = null
 where Id in (select inserted.Id from inserted where inserted.Subscr = 0)

if Exists(select inserted.Id from inserted where inserted.NoSubscr = 1)
begin
 update rnrAlignment
 set  datatime = GetDate()
 where Id in (select inserted.Id from inserted where inserted.NoSubscr = 1);

--  insert into rnrTest
--  select R.*
--  from rnrRequest R
--       join inserted i on R.IdRequest = i.RequestId
--  where i.NoSubscr = 1
--  
--  update R  
--  set R.StatusId = -100
--  from rnrRequest R
--       join inserted i on R.IdRequest = i.RequestId
--  where i.NoSubscr = 1
end
if Exists(select inserted.Id from inserted where inserted.NoSubscr = 0)
 update rnrAlignment
 set  datatime = null
 where Id in (select inserted.Id from inserted where inserted.NoSubscr = 0)
END


дано
rnrRequest.IdRequest(PK) - rnrAlignment.RequestId(FK)

На словах задача
как только A.NoSubscr = 1, сразу A.DataTime = getdate
а R.StatusId приравнять к -100 (неполучается именно это)




Форум: "Начинающим";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2010.09.19;
Скачать: [xml.tar.bz2];




Наверх








Память: 0.75 MB
Время: 0.019 c
15-1277065796     Юрий                  2010-06-21 00:29  2010.09.19  
С днем рождения ! 21 июня 2010 понедельник


3-1245325959      vanatage10            2009-06-18 15:52  2010.09.19  
Как обновить значение в DBgrid измененное в другой программе


2-1277196510      Who_is_you?           2010-06-22 12:48  2010.09.19  
сбои в асинхронном приеме с сом порта


2-1276601299      DevilDevil            2010-06-15 15:28  2010.09.19  
Текст в Clipboard. CF_TEXT или CF_UNICODETEXT


15-1277411394     Юрий                  2010-06-25 00:29  2010.09.19  
С днем рождения ! 25 июня 2010 пятница