Sven Rautenberg: MySQL - gibt es Löschschutz ?

Beitrag lesen

Moin!

Datensätze dürfen nur nach bestimmten Prüfungen gelöscht werden, zum Beispiel muss beim Löschen eines Kunden gewährleistet sein, dass er keine (offene) Rechnung mehr hat.

Kann man solche Regeln in MySQL hinterlegen?

Hängt etwas davon ab, welches MySQL du meinst. Ich tendiere allgemein aber zu "nein".

Das, was du vermutlich suchst, sind "stored procedures". Die können komplexere Vorgänge innerhalb der Datenbank erledigen - unter anderem sicherlich auch eine Prüfung, ob ein Kunde noch offene Rechnungen hat.

MySQL in Version 3.x kennt sowas definitiv nicht. Ob MySQL 4.0 sowas schon kennt - schau in die Doku. MySQL 4.1 ist, was die Features angeht, nochmal eine Stufe weiter, aber angeblich noch immer "beta". Und dass schon über MySQL 5.0 geschrieben wird, ist zwar schön und gut, aber das dürfte allenfalls Alpha-Status sein.

Außerdem brauchst du eventuell eine Lizenz, wenn du MySQL 4.x einsetzt - hängt von deiner Software und dem Einsatzumfeld ab. Lies die Lizenzbedingungen von MySQL dazu.

Mir fallen nur zwei Alternativen ein:
1. Andere Datenbank. POSTGRESQL ist eine sehr schöne Datenbank, die alles bietet, was man vernünftigerweise von einer Datenbank erwarten kann, inklusive Stored Procedures. Das Feature-Angebot geht jedenfalls weit über das hinaus, was man von MySQL 3.x gewohnt ist. Die Datenbank ist tendentiell etwas langsamer, aber das dürfte schlicht daran liegen, dass die Features (die man ja nicht alle benutzen muß) einfach Zeit kosten.

2. Du kannst natürlich auch komplett verhindern, dass in deiner MySQL-Datenbank überhaupt Datensätze gelöscht werden, indem du dem DB-Benutzeraccount kein Recht gibst, DELETE oder DROP auszuführen. Stattdessen gibt es beim Kunden ein Feld, in dem der Status "gelöscht ja/nein" verzeichnet ist, und das beim Löschen dann einfach auf ja gesetzt wird. Ist zwar nicht so elegant, hat aber den auch nicht zu verachtenden Vorteil, dass der Kunde nicht komplett aus den Aufzeichnungen verschwindet - schließlich hat man ja doch eine gewisse Dokumentationspflicht gegenüber z.B. dem Finanzamt.

- Sven Rautenberg