使用約束防止在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中文網其他相關文章!