Avatar billede jyde.dk Nybegynder
28. august 2011 - 12:33 Der er 10 kommentarer og
1 løsning

Trigger syntax error

Jeg har et lille trigger problem.

Normalt koder jeg op imod Oracle db, men jeg har en lille MySQL db hvor jeg skal ha lavet en trigger.

Når et felt i tabellen ændres, så skal et andet felt have samme værdi. Dette har jeg lavet 1000 gange før i Oracle, men jeg får en syntax fejl når jeg laver nedenstående på MySQL databasen


CREATE TRIGGER trigger_name BEFORE UPDATE ON table FOR EACH ROW

BEGIN
  IF OLD.felt1 != NEW.felt1 THEN
    NEW.felt2 := NEW.fel1;
  END IF;
END;

Er der nogen der kan se hvad jeg gør forkert
Avatar billede majbom Novice
28. august 2011 - 13:29 #1
NEW.fel1;

skal ikke være:

NEW.felt1;

?
Avatar billede jyde.dk Nybegynder
28. august 2011 - 17:50 #2
jo, det er en skrivefejl i indlægget

/p
Avatar billede majbom Novice
28. august 2011 - 19:05 #3
okay, så har jeg ingen ide, jeg har aldrig rodet med den del af MySQL...
Avatar billede jyde.dk Nybegynder
28. august 2011 - 21:37 #4
Fejlen jeg får er:

MySQL Database Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.created := NEW.changed;
  END IF;
END' at line 5    3    0
Avatar billede jyde.dk Nybegynder
28. august 2011 - 21:51 #5
Har selv fundet løsning...

man skriver åbenbart således :


BEGIN
  IF OLD.felt1 != NEW.felt1 THEN
    SET NEW.felt2 = NEW.felt1;
  END IF;
END;
Avatar billede majbom Novice
29. august 2011 - 08:31 #6
umiddelbart giver det jo også mere mening - jeg har aldrig set et kolon efterfulgt af et lighedstegn ved en tildeling...
Avatar billede jyde.dk Nybegynder
29. august 2011 - 22:24 #7
Det er standard i Oracle
Avatar billede majbom Novice
29. august 2011 - 22:34 #8
okay - jeg kender kun mysql og mssql :)

men i alle andre programmeringssprog som jeg har arbejdet med, som php, java, javascript, c, c# og andre, har jeg aldrig set det før...

men godt du fik det til at virke :)
Avatar billede wanze Nybegynder
01. september 2011 - 20:25 #9
Det med := ved tildeling er nu meget anvendt, især i ældre eller matematiske sprog. :)
Avatar billede majbom Novice
01. september 2011 - 20:30 #10
okay, så blev jeg da lidt klogere :)
Avatar billede arne_v Ekspert
02. september 2011 - 04:22 #11
Pascal/Modula-2/Oberon/Ada bruger := for assignment.

                                assignment    comparison
Pascal/Modula-2/Oberon/Ada          :=              =
C/C++/Java/C#/JavaScript/PHP        =              ==

Enkelte sprog (VB) bruger = til baade assignment og comparison - det kraever saa at compileren kan udlede hvad det er udfra konteksten.
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