30. september 2010 - 15:01Der er
6 kommentarer og 1 løsning
Trigger
Hej
Jeg er ved at lave en trigger (min første), og er selvfølgelig stødt ind i et problem. FrontEnd er Access, når jeg kører nedenstående trigger på Customer tabellen. Er det sql'en under "else" som bliver effektureret. Så min IF, bliver ikke opfyldt, det havde jeg forventet. Umiddelbart tror jeg at problemet er hvor jeg giver variablerne værdier, "select @agreeNo = agreementNo FROM INSERTED", hvor jeg forventer at variablen @agreeNo får værdien, fra den aktuelle record. Er der nogen måde hvor jeg kan se hvilken værdi en variablen har på et givet tidspunkt i en trigger ?
ALTER TRIGGER [dbo].[updateInvoiceTo] ON [dbo].[Customer] AFTER UPDATE AS DECLARE @agreeNo varchar, @invoiceTo INT select @agreeNo = agreementNo FROM INSERTED select @invoiceTo = invoiceTo FROM INSERTED
BEGIN IF @agreeNo = '09-2-101' UPDATE Customer SET invoiceTo = @invoiceTo where agreementNo = @agreeNo ELSE UPDATE Customer SET invoiceTo = '123' where id = '7897' END
Jeg er ikke helt sikker, men jeg mener at du er nødt til at angive størrelsen på din varchar variable - for ellers mener jeg at de kun er 1 tegn lange.
Jeg kan ikke få det til at virke, men det er nok fordi jeg misforstår det. Indsætter lige min kode, så har du måske større chance for at hjælpe. Jeg har prøvet at sætte linjen med select @agreeNo ind, men når jeg bruger access97 som frontend, hvordan kan jeg så se variablen ? Jeg har prøvet at sætte select @agreeNo ind i BEGIN også.
ALTER TRIGGER [dbo].[updateInvoiceTo] ON [dbo].[Customer] AFTER UPDATE AS DECLARE @agreeNo varchar(20), @invoiceTo INT select @agreeNo = agreementNo FROM INSERTED select @invoiceTo = invoiceTo FROM INSERTED
select @agreeNo
BEGIN IF @agreeNo = '09-2-101' UPDATE Customer SET invoiceTo = @invoiceTo where agreementNo = @agreeNo ELSE UPDATE Customer SET invoiceTo = '123' where id = '7897' END
Jeg skal bare lave min kontrol rigtig, du havde ret, når der står nvarchar(20), kommer den i den rigtige del af IF løkken. Nu har jeg så vendt et eller andet forkert i linjen
UPDATE Customer SET invoiceTo = @invoiceTo where agreementNo = @agreeNo
Tænkte du brugte et management studio siden du skrev i dette forum :)
Synes godt om
Ny brugerNybegynder
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.