Rumah  >  Artikel  >  pangkalan data  >  Bagaimanakah Saya Boleh Menghalang Kemasukan Rentetan Kosong ke dalam Jadual MySQL Tanpa Pemeriksaan Sisi Aplikasi?

Bagaimanakah Saya Boleh Menghalang Kemasukan Rentetan Kosong ke dalam Jadual MySQL Tanpa Pemeriksaan Sisi Aplikasi?

Patricia Arquette
Patricia Arquetteasal
2024-11-22 07:32:13973semak imbas

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

Menghalang Kemasukan Rentetan Kosong dalam MySQL dengan Kekangan

Dalam pertanyaan ini, pengguna telah berjaya menghalang pemasukan nilai NULL ke dalam jadual pangkalan data . Walau bagaimanapun, mereka juga mahu menghalang pemasukan rentetan kosong tanpa bergantung semata-mata pada semakan sisi aplikasi.

Untuk mencapai ini menggunakan kekangan pangkalan data, kami boleh menambah kekangan SEMAK pada definisi jadual:

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)
);

Kekangan ini memastikan lajur foo_test tidak boleh mengandungi rentetan kosong. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa dalam versi MySQL sebelum 8.0, kekangan CHECK dihuraikan tetapi diabaikan oleh semua enjin storan. Oleh itu, rentetan kosong masih boleh dimasukkan ke dalam jadual.

Sebagai penyelesaian, pengguna boleh mempertimbangkan untuk menggunakan pencetus untuk menguatkuasakan kekangan:

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;

Pencetus ini akan menimbulkan ralat dan menghalang pemasukan rentetan kosong ke dalam lajur foo_test.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Kemasukan Rentetan Kosong ke dalam Jadual MySQL Tanpa Pemeriksaan Sisi Aplikasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn