Avatar billede hedemann Nybegynder
15. maj 2007 - 13:45 Der er 4 kommentarer og
1 løsning

Problem med insert trigger og tid

Jeg har en tabel hvortil der er knyttet en INSERT AFTER trigger, Så når der indsættes en række i tabellen så afvikles et exe-program

CREATE TRIGGER SendSMSTrigger
ON dbo. SMSAlert
AFTER INSERT
AS
Declare @id nvarchar(250)
Declare @cmdline nvarchar(250)

SELECT @id=ins.id  FROM inserted ins
Commit

Set @cmdline = '"D:\SMSAlert\SendSMSAlert.exe"  ' + @id
EXEC master..xp_cmdshell @cmdline

Der er en SP der gennemløber nogle tabeller, og checker deres data. Under nogle givende omstændigheder kan der ske det, at der skal indsættes to rækker i tabellen SMSAlert (den med triggeren). Og det er her problemet opstår, idet det kun den første række der indsættes - anden række indsættes ikke i SMSAlert. Hvis så triggeren fjernes fra tabellen så er der intet problem. Så der må være noget med den tid triggeren bruger på at eksekver exe- programmet og en evt. timeout og så den tid der er mellem de to INSERT.

Er der nogle der har en ide til hvordan det løses?
Avatar billede bennytordrup Nybegynder
15. maj 2007 - 13:50 #1
Problemet er, at triggeren er designet til nøjagtig 1 post i inserted, da der hentes en værdi over i en variabel.

Nedenstående er OTOMH og skal muligvis justeres syntaxmæssigt.

CREATE TRIGGER SendSMSTrigger
ON dbo. SMSAlert
AFTER INSERT
AS
Declare @id nvarchar(250)
Declare @cmdline nvarchar(250)

declare IDCursor cursor fastforward
for
select ind.id from inserted ins

open IDCursor

fetch next from IDCursor into @ID

while @@fetch_status = 0 begin
  Set @cmdline = '"D:\SMSAlert\SendSMSAlert.exe"  ' + @id
  EXEC master..xp_cmdshell @cmdline

  fetch next from IDCursor into @ID
end

close IDCursor
deallocate IDCursor
Avatar billede hedemann Nybegynder
15. maj 2007 - 14:09 #2
Det forstår jeg ikke helt...... de indsættes som to seperate insert

if @dato <> @dato2
  Begin
    Bla....
    INSERT INTO SMSAlert (mobil, tekst, afsender, firma)
      VALUES  (......................)
    Print 'Fejl, Send SMS'
  End
ELSE
  BEGIN
  Print 'OK'
  END

if @dato <> @dato3
  Begin
    Bla....
    INSERT INTO SMSAlert (mobil, tekst, afsender, firma)
      VALUES  (......................)
    Print 'Fejl, Send SMS'
  End
ELSE
  BEGIN
    Print 'OK'
  END
Avatar billede bennytordrup Nybegynder
15. maj 2007 - 14:21 #3
OK. det havde jeg ikke lige fanget. Jeg troede, at flere poster blev indsat via et insert statement.
Avatar billede hedemann Nybegynder
12. juni 2007 - 13:53 #4
Øget point antal - må da give svar    :)
Avatar billede hedemann Nybegynder
29. juni 2007 - 10:23 #5
Jeg lukker spørgsmålet........
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester