Tại sao INSERT đầu tiên đi qua cho bảng 2. Lưu ý rằng table2.col_1 là NOT NULL. Nó không chèn NULL cho col_1, nhưng bí ẩn chuyển đổi giá trị NULL thành một chuỗi rỗng. Tôi đang sử dụng MySQL phiên bản 5.5.28. Cảm ơnGhi chèn MySQL với giá trị NULL trong cột NOT NULL
mysql> DROP TABLE IF EXISTS table1, table2;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE IF NOT EXISTS table1 (
-> id INT UNSIGNED NOT NULL AUTO_INCREMENT ,
-> col_1 VARCHAR(45) NOT NULL ,
-> col_2 VARCHAR(45) NOT NULL ,
-> PRIMARY KEY (`id`))
-> ENGINE = InnoDB;
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE table2 LIKE table1;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO table1 (id, col_1, col_2) VALUES (NULL, "xxx","yyy");
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO table2 (id, col_1, col_2) SELECT NULL, NULL, col_2 FROM table1 WHERE id=1;
Query OK, 1 row affected, 1 warning (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 1
mysql> SHOW WARNINGS;
+---------+------+-------------------------------+
| Level | Code | Message |
+---------+------+-------------------------------+
| Warning | 1048 | Column 'col_1' cannot be null |
+---------+------+-------------------------------+
1 row in set (0.00 sec)
mysql> SELECT * FROM table2;
+----+-------+-------+
| id | col_1 | col_2 |
+----+-------+-------+
| 1 | | yyy |
+----+-------+-------+
1 row in set (0.00 sec)
mysql> INSERT INTO table2 (id, col_1, col_2) VALUES(NULL, NULL, "zzz");
ERROR 1048 (23000): Column 'col_1' cannot be null
mysql> SELECT * FROM table2;
+----+-------+-------+
| id | col_1 | col_2 |
+----+-------+-------+
| 1 | | yyy |
+----+-------+-------+
1 row in set (0.00 sec)
có lẽ nó chèn 'chuỗi NULL' và không phải là null (* gì *) –
Strange, tôi đang làm cùng và tôi làm được nulls chèn ... Có lẽ bạn có thể chỉ định PDO :: PARAM_INT khi bạn liên kết giá trị? – Sebas
@JW Vui lòng giải thích. Tôi chỉ cần chỉnh sửa bài viết gốc để hiển thị như thế nào nó chỉ chèn một hàng nếu INSERT được cung cấp bởi một SELECT. – user1032531