Tôi giả sử bạn không muốn trống (chuỗi trống, trái ngược với NULL
) giá trị được phép trong bảng.
Thông thường, đó là những gì CHECK
ràng buộc đối với. Bạn làm điều gì đó giống như
CREATE TABLE
mytable
(
myfield NOT NULL VARCHAR(200),
CHECK(myfield > '')
)
Tuy nhiên, MySQL
phân tích cú pháp ràng buộc nhưng không thực thi nó. Bạn vẫn được phép chèn các giá trị trống.
Để giải quyết vấn đề đó, hãy tạo BEFORE INSERT
kích hoạt và tăng tín hiệu khi cố gắng chèn một giá trị trống:
CREATE TRIGGER
tr_mytable_bi
BEFORE INSERT
ON mytable
FOR EACH ROW
BEGIN
IF NEW.myfield = '' THEN
SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Blank value on mytable.myfield';
END IF;
END;
Làm tương tự trên BEFORE UPDATE
nếu bạn cũng muốn cấm cập nhật giá trị trống.