Delete Cascade

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

Delete Cascade

Postby yoshi80 » 10. January 2007 14:10

hallo
habe da ne Frage bzgl delete cascade.
Dieses wird ja benutzt um vom Schlüssel abhängige Einträge ineiner anderen Tabelle zu löschen.

Irgendwo habe ich gelesen, dass beim nicht verwenden von delete cascade Einträge mit dem Primärschlüssel erst gelöscht werden können, wenn alle Einträge in der Tabelle mit dem ForeignKey auch gelöscht wurden(bzw alle von diesem Eintrag abhängigen). Stimmt das?

Wenn ja dann habe ich meine Tabelle falsch definiert.
Ist folgende Def richtig. Tabelle mit Foreign Key:
CREATE TABLE mix (idA int(10) , idB int(10), FOREIGN KEYidA references TabA(id), FOREIGN KEY(idB) refernces TabB(id));

gruß Yoshi
yoshi80
 
Posts: 25
Joined: 06. December 2006 12:53

Postby Hanspeter Thöni » 11. January 2007 12:34

Fremdschlüsselbeziehungen welche wirklich von der Datenbank geprüft werden sollen (Löschverhinderung bzw. Cascade von Löschungen) funktionieren nur mit InnoDB Tabellen.
Für die korrekte Definition der Beziehungen siehe hier http://dev.mysql.com/doc/refman/5.1/de/innodb-foreign-key-constraints.html
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby yoshi80 » 11. January 2007 12:55

Hallo Thöni,

benutze auch MyISAM ... danke für die Antwort.
Werde mich man über MyISAM und InnoDB entwas schlau machen.
Kannst du mir jedoch als Kurzfassung sagen welche Vor und nachteile dieser beiden sind?

Das mankeine Fremdschlüssel benutzen darf ich ja schon ein heftiger Nachteil Habe auch irgendwo gelesen InnoDB Tabellen dürfne maximal 1000 Einträge enthalten? Bei haben bestimmt ihre Vor und Nachteile.
Welche davon wären die entscheidentsten deine meinung nach?

P.S.: Kann ich für eine Tabelle im Nachhinein die Engine ändern?

gruß Yoshi
yoshi80
 
Posts: 25
Joined: 06. December 2006 12:53

Postby askanier » 06. March 2007 16:01

Moin,

hier ein paar Ausschnitte aus dem Referenzhandbuch (mußte mich gerade
auch erstmal über InnoDB schlau machen):
- InnoDB-Tabellen können beliebig groß sein, selbst auf
Betriebssystemen, deren Dateigröße auf 2GB beschränkt ist
- InnoDB wurde für maximale Leistung bei der Verarbeitung großer
Datenmengen ausgelegt. Es gibt wohl keine andere festplattengestützte
Speicher-Engine für relationale Datenbanken, die so effizient mit der
CPU umgeht
- transaktionssichere (ACID-konforme) Speicher-Engine mit Commit-,
Rollback- und Datenwiederherstellungsfähigkeiten
- beherrscht sowohl Zeilensperren als auch, ähnlich wie Oracle, eine
konsistente Leseoperation ohne Sperren für SELECT-Anweisungen
- benötigt keine Sperreneskalation (manche DB-Engines schalten auf
Tabellensperren um, wenn viele Zeilen geändert werden - ist hier nicht
so)
- unterstützt FOREIGN KEY-Constraints

Eigentlich alles das, was eine ordentliche DB-Engine ausmachen sollte.
Von Beschränkung auf 1000 Einträge keine Spur - eher im Gegenteil.

hth, askanier
askanier
 
Posts: 1
Joined: 06. March 2007 15:40


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 6 guests