[+/-]
MySQL erlaubt Ihnen die Verwendung sowohl von transaktionalen Tabellen, die Rollbacks unterstützen, als auch von nichttransaktionalen Tabellen ohne Rollback. Aus diesem Grund unterscheidet sich der Umgang mit Constraints in MySQL ein wenig von dem in anderen Datenbanksystemen. Wir müssen den Fall beschreiben, der vorliegt, wenn Sie eine große Menge von Datensätzen in einer nichttransaktionalen Tabelle, bei der im Fehlerfall kein Rollback möglich ist, eingefügt oder aktualisiert haben.
Die Grundphilosophie besteht darin, dass MySQL Server versucht, einen Fehler für alle Probleme zu generieren, die während der Verarbeitung einer auszuführenden Anweisung erkannt wurden; gleichzeitig wird versucht, den fehlerfreien Status in Bezug auf alle Fehler wiederherzustellen, die während der Ausführung der Anweisung auftreten. Das lässt sich in den meisten, jedoch nicht in allen Fällen realisieren.
Wenn ein Fehler auftritt, hat MySQL zwei Optionen: Es kann die Ausführung der Anweisung abbrechen oder das Problem bestmöglich beheben und dann fortfahren. Standardmäßig verfolgt der Server die zweite Option. Dies bedeutet beispielsweise, dass der Server unzulässige Werte automatisch auf die nächstgelegenen zulässigen Werte verschiebt.
Es gibt mehrere SQL-Modusoptionen, die eine bessere Kontrolle der Handhabung unzulässiger Datenwerte und der Frage gestatten, ob die Ausführung einer Anweisung im Fehlerfall fortgeführt oder abgebrochen werden soll. Mithilfe dieser Optionen können Sie MySQL Server so konfigurieren, dass es auf eine traditionellere Weise agiert, die anderen Datenbanksystemen ähnelt, bei denen unzulässige Eingaben nicht angenommen werden. Der SQL-Modus kann global beim Serverstart eingestellt werden und betrifft dann alle Clients. Einzelne Clients können den SQL-Modus während der Laufzeit einstellen; auf diese Weise kann jeder Client das Verhalten auswählen, welches für seine speziellen Anforderungen am geeignetsten ist. Siehe auch Abschnitt 5.2.5, „Der SQL-Modus des Servers“.
Die folgenden Abschnitte beschreiben, wie MySQL Server verschiedene Arten von Constraints handhabt.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.