Mysql> chèn giá trị mặc định nếu NULL

Nếu SQL_MODE chứa STRICT_TRANS_TABLES và bạn đang chèn vào một bảng giao dịch (như InnoDB) hoặc nếu SQL_MODE chứa STRICT_ALL_TABLES, thì tất cả các cột NOT NULL không có giá trị DEFAULT (và không phải là AUTO_INCREMENT) phải được tham chiếu rõ ràng trong câu lệnh INSERT. Nếu không, một lỗi như thế này được tạo ra

ERROR 1364 (HY000): Field 'col' doesn't have a default value

Trong tất cả các trường hợp khác, nếu một cột NOT NULL không có giá trị DEFAULT không được tham chiếu, thì một giá trị trống sẽ được chèn vào (ví dụ: 0 cho cột

ERROR 1364 (HY000): Field 'col' doesn't have a default value
1 và '' cho cột
ERROR 1364 (HY000): Field 'col' doesn't have a default value
2). Xem ví dụ

Nếu một cột NOT NULL có giá trị DEFAULT không được tham chiếu, thì ___0_______5 sẽ được chèn vào

Nếu cột

ERROR 1364 (HY000): Field 'col' doesn't have a default value
5 có giá trị DEFAULT không được tham chiếu, giá trị mặc định của nó sẽ được chèn vào. Cũng có thể gán giá trị mặc định một cách rõ ràng bằng cách sử dụng từ khóa DEFAULT hoặc hàm
ERROR 1364 (HY000): Field 'col' doesn't have a default value
9

Nếu từ khóa DEFAULT được sử dụng nhưng cột không có giá trị DEFAULT, thì sẽ xảy ra lỗi như thế này

ERROR 1364 (HY000): Field 'col' doesn't have a default value

Theo mặc định, nếu bạn cố gắng chèn một hàng trùng lặp và có chỉ mục

ERROR 1062 (23000): Duplicate entry 'dup_value' for key 'col'
2, thì INSERT sẽ dừng lại và một lỗi như thế này sẽ được tạo ra

ERROR 1062 (23000): Duplicate entry 'dup_value' for key 'col'

Để xử lý các bản sao, bạn có thể sử dụng mệnh đề IGNORE, INSERT ON DUPLICATE KEY UPDATE hoặc câu lệnh REPLACE. Lưu ý rằng các tùy chọn BỎ QUA và TRÌ HOÃN sẽ bị bỏ qua khi bạn sử dụng CẬP NHẬT KHÓA TRÊN DUPLICATE

Xem thêm

Bình luận

Nội dung được sao chép trên trang web này là tài sản của chủ sở hữu tương ứng và nội dung này không được MariaDB xem xét trước. Quan điểm, thông tin và ý kiến ​​được thể hiện bởi nội dung này không nhất thiết đại diện cho quan điểm của MariaDB hoặc bất kỳ bên nào khác

Ràng buộc giá trị DEFAULT chỉ định một giá trị để ghi vào cột bị ràng buộc nếu một giá trị không được xác định trong câu lệnh INSERT. Giá trị có thể là một ký tự được mã hóa cứng hoặc một biểu thức được đánh giá tại thời điểm hàng được tạo

Thông tin chi tiết

  • Kiểu dữ liệu của Giá trị mặc định phải giống với kiểu dữ liệu của cột
  • Ràng buộc giá trị DEFAULT chỉ áp dụng nếu cột không có giá trị được chỉ định trong câu lệnh INSERT. Bạn vẫn có thể chèn một NULL vào một cột tùy chọn (không thể rỗng) bằng cách chèn một cách rõ ràng NULL. Ví dụ,
    > INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);
    
    1

cú pháp

Bạn chỉ có thể áp dụng ràng buộc giá trị DEFAULT cho các cột riêng lẻ

Ghi chú

Bạn cũng có thể thêm ràng buộc giá trị DEFAULT vào bảng hiện có thông qua

CREATETABLEtable_name(column_namecolumn_typeDEFAULTdefault_valuecolumn_constraints,column_table_deftable_constraints))

Tham sốMô tả
> INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);
5Tên của bảng bạn đang tạo.
> INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);
6Tên của cột bị ràng buộc.
> INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);
7Kiểu dữ liệu của cột bị ràng buộc.
> INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);
8Giá trị bạn muốn chèn theo mặc định, giá trị này phải đánh giá theo cùng loại dữ liệu như
> INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);
7.
> INSERT INTO inventories (product_id, warehouse_id, quantity_on_hand) VALUES (2,30, NULL);
0Bất kỳ ràng buộc cấp độ cột nào khác mà bạn muốn áp dụng cho cột này.
> INSERT INTO inventories (product_id, warehouse_id, quantity_on_hand) VALUES (2,30, NULL);
1Định nghĩa cho bất kỳ cột nào khác trong bảng.
> INSERT INTO inventories (product_id, warehouse_id, quantity_on_hand) VALUES (2,30, NULL);
2Bất kỳ ràng buộc mức bảng nào bạn muốn áp dụng

Thí dụ

biểu tượng/nút/bản sao

> CREATE TABLE inventories (
    product_id        INT,
    warehouse_id      INT,
    quantity_on_hand  INT DEFAULT 100,
    PRIMARY KEY (product_id, warehouse_id)
  );

biểu tượng/nút/bản sao

> INSERT INTO inventories (product_id, warehouse_id) VALUES (1,20);

biểu tượng/nút/bản sao

> INSERT INTO inventories (product_id, warehouse_id, quantity_on_hand) VALUES (2,30, NULL);

biểu tượng/nút/bản sao

> SELECT * FROM inventories;

+------------+--------------+------------------+
| product_id | warehouse_id | quantity_on_hand |
+------------+--------------+------------------+
|          1 |           20 |              100 |
|          2 |           30 | NULL             |
+------------+--------------+------------------+

Nếu ràng buộc giá trị DEFAULT không được chỉ định và giá trị rõ ràng không được cung cấp, giá trị của NULL sẽ được gán cho cột

Làm cách nào để chèn giá trị nếu NULL trong MySQL?

Bạn có thể chèn giá trị NULL vào cột int với điều kiện i. e. cột không được có ràng buộc NOT NULL. Cú pháp như sau. INSERT INTO yourTableName(yourColumnName) giá trị(NULL);

Làm cách nào để chèn giá trị mặc định trong MySQL?

Sử dụng từ khóa DEFAULT tại thời điểm tạo bảng và từ khóa này sẽ chèn giá trị mặc định bất cứ khi nào bạn không cung cấp giá trị cho cột đó.

Làm cách nào để thay thế NULL bằng giá trị mặc định trong MySQL?

Trong SQL, chúng ta có thể sử dụng hai hàm để thay thế các mục null bằng một giá trị mặc định. Các chức năng này là COALESCE() và ISNULL() .

Giá trị mặc định cho NULL MySQL là gì?

Đối với các cột có thể chứa giá trị NULL, giá trị này sẽ là NULL. Mặt khác, các giá trị mặc định chung lần lượt là 0, chuỗi trống hoặc ngày hoặc giờ “không” cho các cột số, chuỗi hoặc ngày hoặc giờ .