Avatar billede kovalt Nybegynder
12. maj 2003 - 22:11 Der er 8 kommentarer og
1 løsning

Triggerfejl med dateAdd

Hej

  Jeg har følgende man kan ikke rigtigt få det til at virke. Er der nogen der kan se hvad der er galt?

CREATE TRIGGER forestillingskontrol
ON forestilling
AFTER INSERT
AS
BEGIN

SET @variabel = (SELECT start FROM INSERTED)

SELECT film.laengde AS filmlaengde FROM film, filmID, forestilling
WHERE filmID.filmID = @variabel
AND filmID.titel = film.titel
AND filmID.filmID = forestilling.filmID
SELECT start FROM inserted AS startstidspunkt

INSERT INTO forestilling (slut)
VALUES (DATEADD(minute, filmlaengde, startstidspunkt))
END
Avatar billede kovalt Nybegynder
12. maj 2003 - 22:16 #1
fejlene der kommer er:

Server: Msg 137, Level 15, State 1, Procedure forestillingskontrol, Line 9
Must declare the variable '@variabel'.
Server: Msg 137, Level 15, State 1, Procedure forestillingskontrol, Line 10
Must declare the variable '@variabel'.
Server: Msg 128, Level 15, State 1, Procedure forestillingskontrol, Line 16
The name 'filmlaengde' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.
Avatar billede arne_v Ekspert
12. maj 2003 - 22:32 #2
Prøv lige med

DECLARE @variabel INT
SET @variabel = (SELECT start FROM INSERTED)

(vælg noget andet end INT hvis ikke det er en INT)
Avatar billede kovalt Nybegynder
12. maj 2003 - 22:37 #3
den kommer med en fejl på INSERTED.... det virker som om den ikke kender INSERTED - det bliver i hvert fald ikke blåt i query analyzer (burde det ikke det?)
Avatar billede arne_v Ekspert
12. maj 2003 - 22:46 #4
Ved jeg ikke - og jeg har ikke lige en SQLServer database at teste på.
Avatar billede arne_v Ekspert
12. maj 2003 - 22:46 #5
inserted er et legalt keyword i triggers.
Avatar billede kovalt Nybegynder
12. maj 2003 - 22:47 #6
OK.... jeg har barberet det lidt sammen og har nu

DECLARE @start SMALLDATETIME
SELECT @start = start FROM forestilling WHERE forestillingsnr = 6

DECLARE @laengde INT
SELECT @laengde = film.laengde FROM film, filmID
WHERE filmID = 1 AND filmID.titel = film.titel

INSERT INTO forestilling (slut)
VALUES (DATEADD(minute, @laengde, @start))
WHERE forestillingsnr = 6

men der kommer en fejl nede i INSERT på WHERE
Avatar billede arne_v Ekspert
12. maj 2003 - 22:53 #7
Mit gæt er at du mener:

UPDATE forestilling SET slut = DATEADD(minute, @laengde, @start)
WHERE forestillingsnr = 6

(INSERT er nye records og der giver WHERE ikke meget mening)
Avatar billede kovalt Nybegynder
12. maj 2003 - 22:58 #8
Nu virker......

skal du ha nogle flere points :-)
Avatar billede arne_v Ekspert
13. maj 2003 - 05:45 #9
Det er OK.

Tak.
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