में कुल मूल्य के साथ रिकॉर्ड दर्ज करता है पहले INSERT तालिका 2 के लिए क्यों जाता है। ध्यान दें कि table2.col_1 पूर्ण नहीं है। यह col_1 के लिए NULL सम्मिलित नहीं करता है, लेकिन रहस्यमय रूप से NULL मान को खाली स्ट्रिंग में परिवर्तित करता है। मैं MySQL संस्करण 5.5.28 का उपयोग कर रहा हूँ। धन्यवादमाईएसक्यूएल न्यूल कॉलम
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)
शायद यह 'सम्मिलित करता NULL' स्ट्रिंग और नहीं अशक्त (* कुछ नहीं *) –
अजीब, मैं एक ही कर रहा हूँ और मैं क्या nulls डाला हो ... हो सकता है कि आप कर सकते थे जब आप मूल्य बांधते हैं तो पीडीओ :: PARAM_INT निर्दिष्ट करें? – Sebas
@JW कृपया समझाएं। मैंने मूल पोस्ट को यह दिखाने के लिए संपादित किया है कि अगर INSERT को SELECT द्वारा खिलाया जाता है तो यह केवल पंक्ति को कैसे सम्मिलित करता है। – user1032531