Rumah > pangkalan data > tutorial mysql > 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
Lepaskan: 2024-11-22 07:32:13
asal
1030 orang telah melayarinya

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)
);
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan