Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Mysql triggers  (gelezen 6602 keer)

accesshater

  • Gast
Mysql triggers
« Gepost op: 2008/06/09, 14:06:08 »
Beste mede linux gebruikers =p

Ik probeer in mysql een trigger te bouwen, heb dit eerder gedaan in mssql en ik moet eerlijk zeggen dat mysql echt but is.

Ik wil mijn trigger debuggen met behulp van print maar dit werkt niet. Weet iemand hier misschien een oplossing voor. Op dit moment ben ik mijn testdata weg aan schrijven naar een temp tabel.

Wat ik ook probeer is op een variable aan te maken in de trigger maar dit lukt mij ook niet =(.

Ik vind het jammer dat de documentatie die mysql aanbied heel beperkt is,

Er staat bijvoorbeeld een voorbeeld met een "FOR EACH ROW", maar ik wil dus een multiple insert tegengaan en wil de rowcount ophalen.

Gr ACCESShater

alvast bedankt

Offline markba

  • Lid
    • http://markbaaijens.nl/
Mysql triggers
« Reactie #1 Gepost op: 2008/06/09, 14:36:00 »
MySQL heeft row level triggers en geen statement level triggers (zoals in MS SQL Server en Sybase ASE). De triggers gaat dus af, elke keer als een record wordt aangepast (insert/update/delete). De variabele @@rowcount bestaat dus ook niet (kan ook niet bestaan).
http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-29-5-3

Het tegenhouden van een multiple insert lukt dus niet, in ieder geval niet op de manier zoals je in gedachten had. Misschien kun je uitleggen wat bij jou een 'multiple insert' is (binnen of buiten een transactie, één of meerdere clients, etc.).

Nog wat info over triggers: http://dev.mysql.com/doc/refman/5.0/en/triggers.html

accesshater

  • Gast
Mysql triggers
« Reactie #2 Gepost op: 2008/06/09, 14:48:20 »
ik wilde met @@rowcount afdwingen dat er maar 1 record mag worden aangepast oid. Maar als de trigger afgaat voor iedere record dan is het wel te doen.

Alleen ben ik er net ook achter gekomen dat er geen raiseerror bestaat voor mysql, wat opzich heel jammer is. Hoe geef je de fouten nu door aan de applicatie?

Offline markba

  • Lid
    • http://markbaaijens.nl/
Mysql triggers
« Reactie #3 Gepost op: 2008/06/09, 15:37:59 »
Tsja, MySQL is nog niet op het niveau van 'echte' databases (Firebird bijvoorbeeld, mijn favoriet) zullen we maar zeggen, want errors raizen zit er (voor zo ver ik na kan gaan) niet in:
http://bugs.mysql.com/bug.php?id=16999
http://rpbouman.blogspot.com/2006/02/dont-you-need-proper-error-handling.html

accesshater

  • Gast
Mysql triggers
« Reactie #4 Gepost op: 2008/06/09, 16:22:18 »
jammer =(

iig bedankt voor je hulp

Offline markba

  • Lid
    • http://markbaaijens.nl/
Mysql triggers
« Reactie #5 Gepost op: 2008/06/09, 16:44:48 »
Probeer anders eens PostgreSQL of Firebird, die kunnen dus wel errors (exceptions) raizen (en nog veel meer dat MySQL niet kan).

http://www.postgresql.org/
http://www.firebirdsql.org/

accesshater

  • Gast
Mysql triggers
« Reactie #6 Gepost op: 2008/06/09, 17:05:45 »
tnx markba zal ernaar kijken en misschien ook gebruiken.
=)