首頁  >  文章  >  資料庫  >  如何在沒有應用程式端檢查的情況下防止將空字串插入 MySQL 表中?

如何在沒有應用程式端檢查的情況下防止將空字串插入 MySQL 表中?

Patricia Arquette
Patricia Arquette原創
2024-11-22 07:32:13973瀏覽

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

使用約束防止在MySQL 中插入空字串

在此查詢中,使用者已成功阻止將NULL 值插入到資料庫表中。但是,他們還希望防止插入空字串,而不是僅依賴應用程式端檢查。

要使用資料庫約束來實現此目的,我們可以在表定義中新增 CHECK 約束:

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

此約束確保 foo_test 列不能包含空字串。然而,需要注意的是,在 8.0 之前的 MySQL 版本中,CHECK 約束會被解析,但會被所有儲存引擎忽略。因此,空字串仍然可以插入到表中。

作為解決方法,使用者可以考慮使用觸發器來強制執行約束:

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;

此觸發器將引發錯誤並防止將空字串插入 foo_test 列。

以上是如何在沒有應用程式端檢查的情況下防止將空字串插入 MySQL 表中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn