Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Ràng buộc cột Mysql không trống / bắt buộc

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đặt hàng kết quả biểu mẫu Mysql nhóm theo

  2. Chế độ xem Crosstab trong mySQL?

  3. Mysql_connect mở trong bao lâu?

  4. PHP MySql và định vị địa lý

  5. Các cột tùy chọn để lọc dữ liệu