Heim > Datenbank > MySQL-Tutorial > Wie kann ich das Einfügen leerer Zeichenfolgen in MySQL-Tabellen ohne anwendungsseitige Prüfungen verhindern?

Wie kann ich das Einfügen leerer Zeichenfolgen in MySQL-Tabellen ohne anwendungsseitige Prüfungen verhindern?

Patricia Arquette
Freigeben: 2024-11-22 07:32:13
Original
989 Leute haben es durchsucht

How Can I Prevent Empty String Insertion into MySQL Tables Without Application-Side Checks?

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)
);
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage