Ok, trong this question Tôi đã học cách ngăn chặn việc chèn giá trị NULL. Nhưng, thật không may, một chuỗi rỗng đang được chèn vào anyway. Ngoài việc ngăn chặn điều này ở phía PHP, tôi muốn sử dụng một cái gì đó giống như một ràng buộc cơ sở dữ liệu để ngăn chặn điều này. Tất nhiên một kiểm tra về phía ứng dụng là cần thiết, nhưng tôi muốn nó được ở cả hai bên.Tôi đang tìm một ràng buộc để ngăn việc chèn một chuỗi rỗng vào MySQL
Tôi được dạy rằng bất kỳ ứng dụng nào đang nói chuyện với cơ sở dữ liệu của bạn, nó sẽ không thể chèn dữ liệu sai về cơ bản trong đó. Vì vậy, ...
CREATE TABLE IF NOT EXISTS tblFoo (
foo_id int(11) NOT NULL AUTO_INCREMENT,
foo_test varchar(50) NOT NULL,
PRIMARY KEY (foo_id)
);
vẫn sẽ cho phép tôi làm chèn này:
INSERT INTO tblFoo (foo_test) VALUES ('');
Mà tôi muốn ngăn chặn.
Tôi có thể thấy nhu cầu của bạn để ngăn chặn các chuỗi rỗng và tôi cũng được dạy để ngăn chặn dữ liệu sai được chèn vào ở cấp cơ sở dữ liệu. Nhưng kinh nghiệm đã dạy tôi rằng bạn cần thực hiện một phán quyết chi phí/lợi ích cẩn thận dựa trên sự phức tạp của ràng buộc. Một số ràng buộc đơn giản để thể hiện ở cấp ứng dụng nhưng có thể trở nên rất cồng kềnh ở cấp cơ sở dữ liệu. Tệ hơn nữa, họ có xu hướng hoàn toàn khóa bạn vào một nhà cung cấp cơ sở dữ liệu nếu bạn lạm dụng nó. Chỉ cần $ 0,02 của tôi. –