Avatar billede srofhest Nybegynder
31. oktober 2010 - 20:59 Der er 11 kommentarer og
1 løsning

Trigger hjælp.

Er der en der kunne hjælpe mig og fortælle mig hvad der er galt i nedenforstående kode.

får denne besked når #1064 - 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 '' at line 13.

DELIMITER $$

CREATE TRIGGER ins_bf_Stats
BEFORE INSERT ON stats
FOR EACH ROW
BEGIN

UPDATE totals SET Value=Value+1 WHERE Name='Kills';

UPDATE users SET XMoney=XMoney+(3-2), Points=Points+1, Exp=Exp+1
WHERE ID='1';

UPDATE users SET XMoney=XMoney-'1', Points = Points+1 WHERE ID='2';

END$$

på forhånd tak.
31. oktober 2010 - 21:10 #1
Kan det vaere fordi du proever at regne med en tekststreng?  SET XMoney=XMoney-'1' skal nok vaere SET XMoney=XMoney-1
Avatar billede srofhest Nybegynder
31. oktober 2010 - 21:17 #2
doh, dumme fejl :S
Avatar billede srofhest Nybegynder
31. oktober 2010 - 21:18 #3
Dog ændrede det ikke på fejlen.
01. november 2010 - 14:17 #4
Ja, jeg fandt ud af, til min overraskelse, at mysql accepterer  SET XMoney=XMoney-'1' ligesaavel som SET XMoney=XMoney-1, saa fejlen maa naturligvis ligge et andet sted.  Jeg har ikke mulighed for direkte at eksperimentere fordi min mysql version ikke understoetter triggers.  Ved at kikke i tutorials er det eneste jeg kan komme i tanker om at END$$ maaske skal vaere END; $$.  Hvis det ikke hjaelper saa maa jeg give up.
Avatar billede srofhest Nybegynder
01. november 2010 - 16:12 #5
Det lyder også som en mulighed. Det vil jeg prøve engang i aften når jeg har fået fri.
01. november 2010 - 16:37 #6
(Det er helligdag i Belgien hvor jeg bor i dag.  Jeg glemte helt at resten af verden har vaeret paa arbejde.)
Avatar billede arne_v Ekspert
03. november 2010 - 03:07 #7
MySQL har et ret afslappet forhold til 123 versus '123'.

Lidt chokerende.

Det er formentligt en af grundene til at CONCAT funktionen eksisterer.
Avatar billede arne_v Ekspert
03. november 2010 - 03:09 #8
Med hensyn til fejlen er der ikke noget som lige springer i øjnene.

Kan du prøve at udføre det i MySQL command line tool og poste hele output?
Avatar billede srofhest Nybegynder
03. november 2010 - 11:27 #9
Ser nu sådan her ud.

CREATE TRIGGER ins_bf_Stats
BEFORE INSERT ON stats
FOR EACH ROW
BEGIN
DECLARE AddPoints DECIMAL;
DECLARE IsSuicide INTEGER;

SET IsSuicide=NEW.Suicide;
SET AddPoints=NEW.Fee/2;

IF IsSuicide=1 THEN

UPDATE totals SET Value=Value+1 WHERE Name='Kills';

UPDATE users SET XMoney=XMoney+(NEW.Stake-NEW.Fee), Points=Points+AddPoints, Exp=Exp+1 WHERE ID=NEW.KillerID;

UPDATE users SET XMoney=XMoney-NEW.Stake, Points=Points+AddPoints WHERE ID=NEW.VictimID;

ELSE

UPDATE totals SET Value=Value+1 WHERE Name='Suicides';

UPDATE users SET XMoney=Xmoney-New.Stake, EXP=Exp-1 WHERE ID=VictimID;

END IF;
END$$

Output ser sådan ud

http://www.keep-gaming.com/mysql.png
Avatar billede srofhest Nybegynder
03. november 2010 - 15:25 #10
Jeg har ikke flere spørgsmål, jeg har fikset problemet.
05. november 2010 - 15:27 #11
I saa fald, kan jeg bede dig lukke spoergsmaalet.  Du har allerede selv lagt et svar, du behoever bare at acceptere det.  Ved at lukke spoergsmaalet rydder du op og soerger for at spoergsmaalet ikke bliver staaende som aabent i min (og andres) liste af indlaeg.  Please.
01. maj 2011 - 07:03 #12
srofhest, jeg proever lige en gang til - du oprettede spoergsmaalet, du loeste det selv, og du lagde et svar.  Alt hvad du behoever for at rydde op og lukke er at acceptere svaret.  Saa staar det ikke laengere som aabent i min (og andres) liste af indlaeg.  Please.
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