power-box.de
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 22.04.2008, 11:28   #1
TP-Newbie
 
Registriert seit: Apr 2008
SnUgEr macht alles soweit korrekt
Unhappy

MySQL Trigger


Hallo alle zusammen,

ich suche seit knapp zwei Tagen eine Lösung zu einem MySQL Problem. Ich verwende als DB MySQL 5.0 mit InnoDB Tabellen. Verwende InnoDB um Transaktionssicherheit sowie referentielle Integrietät zu erhalten. Die möchte ich mir mit einem Trigger weiter sicher, jedoch will MySQL nicht so wie ich.

Mein Problem, ich habe mehrere Tabellen die miteinander verknüpft sind.
Verbindungen: A ------------ B ------------ C -------------- A
Beziehungen: n:m 1:1 n:m

Wenn ich einen Datensatz in die Tabelle zwischen A und B einfüge (wegen n:m Beziehung), möchte ich sicherstellen, das der Datensatz auch wirklich über die Tabelle C zu dem richtigen A gehört. Ich hab mir hierfür auch schon einen Trigger zusammengebaut. Jedoch funktioniert der Trigger nicht so wie ich will. Sobald ein Datensatz in die Tabelle zwischen A und B eingefügt wird soll der Trigger gestartet werden und über C, A überprüfen. Ist keine integrietät gegeben, soll der Trigger ein Rollback vornehmen wie es beim MS SQL Server funktioniert.

Laut dem MySQL Referenzhandbuch ist jedoch ein Rollback innerhalb eines Triggers nicht erlaubt. Weiß zufällig einer wie ein Trigger abgebrochen werden kann und somit das einfügen rückgängig gemacht wird?

Schon mal vielen Dank im vorraus!
SnUgEr ist offline   Mit Zitat antworten


Alt 22.04.2008, 16:27   #2
DSB
TP-Veteran
 
Benutzerbild von DSB
 
Registriert seit: Mar 2005
Ort: Weyhe
DSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's gehtDSB hilft, wo's geht
Wäre es statt einem Trigger, der Fehleinträge im Nachhinein löscht, nicht logischer den Eintrag an sich vor dem INSERT mit entsprechenden IF-Anweisungen zu prüfen?
__________________
Gruß, DSB
Einfaches Backup/ Restore Deiner MySQl-Datenbank
DSB ist offline   Mit Zitat antworten
Alt 22.04.2008, 16:37   #3
TP-Newbie
 
Registriert seit: Apr 2008
SnUgEr macht alles soweit korrekt
Ja das war meine Absicht, das Einfügen zu verhindern, sobald der Trigger eine falsche referenzielle Integrität feststellt.
SnUgEr ist offline   Mit Zitat antworten
Alt 22.04.2008, 16:42   #4
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
InnoDB hat doch von Hause aus eine referenzielle Integrität ...
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 22.04.2008, 16:48   #5
TP-Newbie
 
Registriert seit: Apr 2008
SnUgEr macht alles soweit korrekt
Ja, InnoDB hat eine referenzielle Integrität, aber nicht über mehrere Tabellen hinweg, siehe mein Problem:
Verbindungen: A ------------ B ------------ C -------------- A
Beziehungen: A - B n:m; B - C 1:1; C - A n:m

Es werden Daten in der Tabelle zwischen A und B eingefügt. Dann soll aber sichergestellt werden das die gerade eingefügten Daten richtig zugeordnet sind. Dies kann nur über zwei INNER JOINs über Tabelle B mit C mit A festgestellt werden.
SnUgEr ist offline   Mit Zitat antworten
Alt 22.04.2008, 16:49   #6
TP-Urgestein
 
Benutzerbild von webcreate
 
Registriert seit: Nov 2003
Ort: NRW
webcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichtswebcreate ist einer der Eckpfeiler des TP - ohne ihn geht nichts
Stimmt, mein Fehler ...
__________________
Gruß Mark
Mein Blog zum TP || XING Profil || grafiker.de Profil || How to use GOOGLE || PS Kniffe
emCalculator 1.0



webcreate IT SOLUTIONS
www.webcreate-nrw.de
webcreate ist offline   Mit Zitat antworten
Alt 22.04.2008, 16:57   #7
TP-Newbie
 
Registriert seit: Apr 2008
SnUgEr macht alles soweit korrekt
Ich hab das Datenbankschema als Bild eingefügt. Das erklären ist immer recht umständlich, ein Bild sagt mehr als tausend Worte

Gerade festgestellt das ich mich mit den Namen im Bild vertan habe im Vergleich zu meiner Erklärung weiter unten. Sorry!
Miniaturansicht angehängter Grafiken
mysql-trigger-dbschema.png  

Geändert von SnUgEr (22.04.2008 um 17:04 Uhr).
SnUgEr ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
MySQL Trigger MySQL Trigger
« PHP und MySQL auf Mac einrichten? | zufalls bild/link »

Stichworte
datenbank, mysql

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:49 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67