[MySQL] Triggers en Stored Procedures

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb 2 databases met in de eerste een tabel 'IEP' waarin kolommen iep (echte naam van een persoon) en name (nummer van een telefoon) staan, en een database met een tabel 'CDR' waarin een kolom src (dezelfde naam van de telefoon als de 'name' in de andere tabel) staat.

Asterisk stuurt automatisch data naar de 2e database (naar tabel CDR) met dus een nummer als src. Dit nummer staat dus ook in de andere database met daarbij een naam van een persoon. Ik wil dat deze naam bij src wordt ingevoerd ipv het nummer.

Ik heb me laten vertellen dat het mogelijk zou moeten kunnen zijn met triggers of stored procedures ofzo, maar ik weet zelf niet echt hoe. Heb wel een ideetje hoe het functioneel zou kunnen werken, maar in de praktijk gaat dat natuurlijk niet (heb geen ervaring met het programmeren van deze dingen)

Ik had ongeveer hetvolgende idee:

CREATE TRIGGER change_src BEFORE INSERT ON cdr
FOR EACH ROW BEGIN
SET NEW.src = (SELECT iep FROM DB1.IEP WHERE name = NEW.src)
END

Misschien dat iemand wat weet?

Tnx

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En wat werkt er precies niet aan hetgeen je nu post? Krijg je meldingen? Doet 'ie gewoon niks? Heb je hem überhaupt uitgeprobeerd?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Net pas voor het eerst geprobeerd, maar wist al dat het niet zou werken.. was eigenlijk puur om een betere indruk te krijgen wat ik ongeveer zou willen bereiken

#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 'END' at line 4

[ Voor 15% gewijzigd door Verwijderd op 02-12-2009 11:55 ]


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
Er mist een ; achter het statement in de trigger:

SET NEW.src = (SELECT iep FROM DB1.IEP WHERE name = NEW.src) ;

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Okee, geen idee dat dat een fout zou kunnen zijn, maar tnx, ff proberen

[ Voor 53% gewijzigd door Verwijderd op 02-12-2009 12:54 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De trigger doet het, maar het werkt dus nog niet.. de src blijft gewoon een getalletje ipv een naam. Heb ook eerst even geprobeert van een andere tabel in dezelfde database gebruik te maken, om uit te sluiten dat het probleem daar zit, werkt ook nog niet.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het werkt met de volgende trigger:

CREATE TRIGGER change_src BEFORE INSERT ON cdr
FOR EACH ROW BEGIN
SET NEW.src = (SELECT iep FROM DB1.IEP WHERE name = NEW.src);
END;

Probleem is nu alleen wel dat als er geen match is tussen de NEW.src en de 'name' dan voegt hij simpelweg niets toe aan de database. Heb al iets geprobeert met IF NEW.src = (SELECT iep FROM DB1.IEP WHERE name = NEW.src) THEN SET bladiebla, maar dan geeft die mooi een harde error terug.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

"Een harde error". Kun je je voorstellen dat we daar niets mee kunnen? ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • cariolive23
  • Registratie: Januari 2007
  • Laatst online: 18-10-2024
NMe schreef op woensdag 02 december 2009 @ 16:29:
"Een harde error". Kun je je voorstellen dat we daar niets mee kunnen? ;)
Misschien kun je er op schaatsen?
8)7

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Oh gewoon weer een syntax error ;)

#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 5

bij:

CREATE TRIGGER change_src BEFORE INSERT ON cdr
FOR EACH ROW BEGIN
IF NEW.src = (SELECT iep FROM DB1.IEP WHERE name = NEW.src) THEN
SET NEW.src = (SELECT iep FROM DB1.IEP WHERE name = NEW.src);
END;

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:27

Creepy

Tactical Espionage Splatterer

Dan controleer je nu de maual en kijk je wat er niet goed is? Het is hier geen helpdesk om snel je errors gefixt te krijgen. We verwachten van je dat je zelf in staat bent om zaken als syntax errors kunt oplossen omdat dat over het algemeen echt basiskennis is van de gebruikte taal (SQL in dit geval). Dus: waazr denk je zelf dat het mis gaat en wat heb je zelf al geprobeerd om je foutmelding op te lossen?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik zou eens beginnen in dit hoofdstuk en zien dat if geen language construct is maar een functie. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
NMe schreef op donderdag 03 december 2009 @ 11:28:
Ik zou eens beginnen in dit hoofdstuk en zien dat if geen language construct is maar een functie. ;)
Je hebt een IF functie en een IF statement. http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Hmm, en ik maar kloten met CASE steeds. :P Anyway, op die pagina die je linkt staat ook nog eens omschreven waarom het fout gaat bij de topicstarter. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1