Verhindern des Einfügens leerer Zeichenfolgen in MySQL mit Einschränkungen
In dieser Abfrage hat der Benutzer erfolgreich das Einfügen von NULL-Werten in eine Datenbanktabelle verhindert . Allerdings möchten sie auch das Einfügen leerer Zeichenfolgen verhindern, ohne sich ausschließlich auf anwendungsseitige Prüfungen zu verlassen.
Um dies mithilfe einer Datenbankeinschränkung zu erreichen, können wir der Tabellendefinition eine CHECK-Einschränkung hinzufügen:
CREATE TABLE IF NOT EXISTS tblFoo ( foo_id int(11) NOT NULL AUTO_INCREMENT, foo_test VARCHAR(50) NOT NULL CHECK (foo_test <> ''), PRIMARY KEY (foo_id) );
Diese Einschränkung stellt sicher, dass die foo_test-Spalte keine leeren Zeichenfolgen enthalten kann. Es ist jedoch wichtig zu beachten, dass in MySQL-Versionen vor 8.0 CHECK-Einschränkungen analysiert, aber von allen Speicher-Engines ignoriert werden. Daher kann immer noch eine leere Zeichenfolge in die Tabelle eingefügt werden.
Um dieses Problem zu umgehen, kann der Benutzer die Verwendung von Triggern in Betracht ziehen, um die Einschränkung durchzusetzen:
CREATE TRIGGER trg_tblFoo_prevent_empty_string BEFORE INSERT ON tblFoo FOR EACH ROW BEGIN IF NEW.foo_test = '' THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Empty string not allowed in foo_test column'; END IF; END;
Dieser Trigger löst einen Fehler aus und Verhindern Sie das Einfügen einer leeren Zeichenfolge in die Spalte foo_test.
Das obige ist der detaillierte Inhalt vonWie kann ich das Einfügen leerer Zeichenfolgen in MySQL-Tabellen ohne anwendungsseitige Prüfungen verhindern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!