Hinzufügen benutzerdefinierter CHECK-Einschränkungen in MySQL
Während die MySQL-Dokumentation Beispiele für CHECK-Einschränkungen enthält, ist es wichtig zu beachten, dass diese Einschränkungen derzeit nicht gelten vom Motor unterstützt. Daher werden durch die Definition in Ihrer Tabellendefinition keine Einschränkungen für Datenwerte erzwungen.
Erklärung
Laut MySQL-Handbuch wird „Die CHECK-Klausel analysiert.“ aber von allen Speicher-Engines ignoriert.“ Das bedeutet, dass MySQL die CHECK-Einschränkungsdefinition einfach überspringt, ohne sie auf die Tabelle anzuwenden.
Problemumgehung
Leider bietet MySQL keine direkte Möglichkeit, CHECK zu erzwingen Einschränkungen. Eine mögliche Problemumgehung besteht jedoch darin, stattdessen Trigger zu erstellen. Trigger sind Datenbankobjekte, die auf bestimmte Ereignisse reagieren, wie z. B. INSERT-, UPDATE- oder DELETE-Vorgänge für eine Tabelle.
Zum Beispiel könnten Sie einen Trigger erstellen, der den Wert des Statusattributs überprüft, bevor ein INSERT- oder DELETE-Vorgang zugelassen wird Der UPDATE-Vorgang soll ausgeführt werden. Hier ist ein Beispielcode-Snippet für einen solchen Trigger:
DELIMITER $$ CREATE TRIGGER participants_validate_status BEFORE INSERT OR UPDATE ON Participants FOR EACH ROW BEGIN IF NEW.status NOT IN ('a', 'd', 'u') THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid value for status'; END IF; END $$ DELIMITER ;
Alternative Lösungen
Wenn Sie eine Datenbank benötigen, die CHECK-Einschränkungen unterstützt, sollten Sie die Verwendung einer alternativen Open-Source-Lösung in Betracht ziehen RDBMS wie PostgreSQL. PostgreSQL bietet robuste Unterstützung für CHECK-Einschränkungen und ist eine praktikable Option für die Verwaltung der Datenintegrität.
Das obige ist der detaillierte Inhalt vonUnterstützt MySQL CHECK-Einschränkungen, und wenn nicht, welche Alternativen gibt es?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!