GST*_*TAR 9 mysql sql foreign-keys
我有一个整数列,我想添加一个外键约束.唯一的问题是,如果该列没有/需要一个值,默认情况下MySQL会输入一个'0'值.这显然打破了外键约束,因为主表中没有PK为0的记录.
我怎样才能克服这个问题?
您可能希望将外键设置为接受NULL值,并使用NULL而不是0值.
从概念上讲,NULL意味着缺少未知值.如果你的行"没有/需要价值",我相信NULL完全适合.
是的,一个NULL值不会破坏你的外键约束.
让我们建立一个基本的例子:
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;
Run Code Online (Sandbox Code Playgroud)
然后:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2529 次 |
| 最近记录: |