Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Mehrere Datenbanken über DELETE löschen (https://www.delphipraxis.net/122416-%5Bphp%5D-mehrere-datenbanken-ueber-delete-loeschen.html)

Yheeky 15. Okt 2008 22:26


[PHP] Mehrere Datenbanken über DELETE löschen
 
Hi,

ich habe zwei Tabellen, die zusammenhängen mit einem Schlüssel (ID) verbunden (dieser kommt in beiden Tabellen vor). Wie kann ich nun in beiden Tabellen die Einträge mit einer bestimmten ID löschen?

mkinzler 15. Okt 2008 22:36

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Eine Delete Rule anlegen

Yheeky 15. Okt 2008 22:51

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
;-)

Okay, präziser gefragt - es handelt sich um den Versand von Nachrichten:

Code:
Tabelle 1:
ID, Betreff, Text
1, Hallo, Das ist ein Test
2, BlaBlub, Sinnloser Text

Tabelle 2:
ID, Empfänger
1, Andreas
1, Beate
2, Christoph
Wenn ich nun die Nachricht mit der ID 1 löschen möchte, sollen auch die Einträge in Tabelle 2 gelöscht werden. Wie kann ich das anstellen?

omata 15. Okt 2008 22:53

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Hast du wirklich zwei Datenbanken? Oder zwei Tabellen innerhalb einer Datenbank!
Du solltest dir erstmal klar machen, was eine Datenbank und was eine Tabelle ist.

Yheeky 15. Okt 2008 22:55

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Verzeihung, es geht natürlich um Tabellen, nicht um Datenbanken!
Ich kenne den Unterschied ;)

omata 15. Okt 2008 23:01

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Dann schreibt du zwei DELETE-Anweisung in eine Transaction und machst so aus beiden Anweisungen eine und führst zum Schluss ein Commit aus. Dieses erweiterte Löschen kann die Datenbank auch selber ausführen. Allerdings hast du noch nichts über die verwendete Datenbank geschrieben.

Yheeky 15. Okt 2008 23:08

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Okay, danke...das klingt doch schonmal gut...ist eine MySQL-Datenbank, mit der ich arbeite.

Dax 15. Okt 2008 23:14

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Welche Version von MySQL, welche Engine? Das macht einen gewaltigen Unterschied...

alcaeus 16. Okt 2008 06:47

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Jup. Das Sauberste ist, es ueber einen Foreign Key Restraint und einen Trigger zu loesen. Das Uebliche ist, das ueber zwei DELETES zu loesen; je nachdem welchen Storage-Type die Tabellen haben sogar ohne Transaction.

Und ja, sag mal welchen Server du hast. MySQL5 kann viel mehr als 4, da kann man doch etwas serioeser arbeiten ;)

Greetz
alcaeus

Yheeky 16. Okt 2008 08:15

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Ohje, welche Informationen ich alle vergessen hab :roll:
Ich hab die Version 5.0.51a installiert.

generic 16. Okt 2008 08:20

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Bei MYSQL gibt es verschiedene Tabellen Typen. Die bekanntesten sind MYISAM und INNOdb.

MYISAM (und NDB) kann keine Löschweitergabe.
INNODB kann sie.

Bei der automatischen Löschweitergabe geht es eigendlich um ForeignKey Constraints welche mit "Cascade" den "Delete" weitergeben.
Aber das kann bei MYSQL nur die Engine INNODB.

http://dev.mysql.com/doc/refman/5.0/...nstraints.html

Yheeky 16. Okt 2008 08:29

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Okay, meine Tabellen sind nämlich vom Typ "MyISAM". Muss ich dann zwei Deletes bilden und ausführen?

generic 16. Okt 2008 08:46

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Ja

oder du erzeugst onDelete Trigger (wenn das MyISAM kann).
Welche dann den Datensatz weg löschen.
Das ist aber dann auch nur ein Delete-SQL. Dieses würde dann aber automatisch ausgeführt werden.

Du solltest INNODB nutzten!
* Diese Engine ist stabiler als MyISAM.
* kann Transaktionen
* kann Löschweitergaben

http://dev.mysql.com/doc/refman/5.1/...e-engines.html

Warum vergesse ich heute eigendlich immer die Links?

Yheeky 16. Okt 2008 09:18

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Zitat:

Zitat von generic
Ja

oder du erzeugst onDelete Trigger (wenn das MyISAM kann).
Welche dann den Datensatz weg löschen.

Wie kann ich das machen?

Zitat:

Zitat von generic
Du solltest INNODB nutzten!
* Diese Engine ist stabiler als MyISAM.
* kann Transaktionen
* kann Löschweitergaben

http://dev.mysql.com/doc/refman/5.1/...e-engines.html

Warum vergesse ich heute eigendlich immer die Links?

Kann ich die Datenbank einfach umstellen, ohne das ich am PHP-Code (Zugriff auf die Datenbank und deren Tabellen) etwas ändern muss? Das wäre nun nämlich zu aufwändig...

jfheins 16. Okt 2008 13:03

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Zitat:

Zitat von Yheeky
Kann ich die Datenbank einfach umstellen, ohne das ich am PHP-Code (Zugriff auf die Datenbank und deren Tabellen) etwas ändern muss? Das wäre nun nämlich zu aufwändig...

Ja, kannst du. Zugriffe und so sind komplett identisch, nur die Features unterscheiden sich.
innoDB kann keine Volltext-Suche, sonst isses besser ;)

Wenn du irgendwelche "erweiterten Sachen" verwendest, solltest du ein Backup machen,

zum ändern reicht dann ein einfaches
SQL-Code:
ALTER TABLE t1 ENGINE=InnoDB;

Yheeky 16. Okt 2008 13:20

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Kann ich auch über den phpAdmin oder?
Definiere "Volltext-Suche" ;-)

jfheins 16. Okt 2008 13:34

Re: [PHP] Mehrere Datenbanken über DELETE löschen
 
Zitat:

Zitat von Yheeky
Kann ich auch über den phpAdmin oder?

Jap.

Zitat:

Definiere "Volltext-Suche" ;-)
Du hast große Artikel und suchst in allen Datensätzten nach einem Wort.

Wikipedia benutzt Volltext-Suche ;)

http://dev.mysql.com/doc/refman/5.0/...xt-search.html


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz