आप NULL
. को स्वीकार करने के लिए अपनी विदेशी कुंजी सेट करना चाह सकते हैं मान, और एक NULL
. का उपयोग करें 0
. के बजाय मूल्य।
वैचारिक रूप से, NULL
मतलब एक अज्ञात मान नहीं है . यदि आपकी पंक्ति में "मूल्य नहीं है/उसकी आवश्यकता नहीं है", तो मेरा मानना है कि NULL
बिल्कुल फिट बैठता है।
और हाँ, एक NULL
value आपकी विदेशी कुंजी बाधा नहीं तोड़ेगी।
आइए एक बुनियादी उदाहरण बनाएं:
CREATE TABLE parents (
id int PRIMARY KEY,
value int
) ENGINE = INNODB;
CREATE TABLE children (
id int PRIMARY KEY,
parent_id int,
FOREIGN KEY (parent_id) REFERENCES parent (id)
) ENGINE = INNODB;
फिर:
INSERT INTO parents VALUES (1, 100);
Query OK, 1 row affected (0.00 sec)
INSERT INTO children VALUES (1, 1);
Query OK, 1 row affected (0.00 sec)
INSERT INTO children VALUES (2, 0);
ERROR 1452 (23000): A foreign key constraint fails
INSERT INTO children VALUES (2, NULL);
Query OK, 1 row affected (0.00 sec)
SELECT * FROM children;
+----+-----------+
| id | parent_id |
+----+-----------+
| 1 | 1 |
| 2 | NULL |
+----+-----------+
2 rows in set (0.01 sec)