【发布时间】:2021-02-21 11:00:43
【问题描述】:
我有这个代码,你可以试试db-fiddle:
CREATE TABLE EMPLOYEE
( ID INT,
Name VARCHAR(15) NOT NULL,
Age INT,
Dnumber INT,
Level INT,
PRIMARY KEY (ID)
);
INSERT INTO EMPLOYEE (ID, Name, Age, Dnumber, Level) VALUES(1,'Tom', 21, 2, 5);
INSERT INTO EMPLOYEE (ID, Name, Age, Dnumber, Level) VALUES(2,'Lucky', 22, 2, 3);
INSERT INTO EMPLOYEE (ID, Name, Age, Dnumber, Level) VALUES(NULL,'Blue', 22, 2, 3);
如果我使用 SQLite,我可以添加 NULL 值,但如果我使用 MySQL,则不能。我会收到这个错误:
Schema Error: Error: ER_BAD_NULL_ERROR: Column 'ID' cannot be null
我可以将它添加到 SQLite 的原因是什么?
【问题讨论】:
-
我不能代表 SQLite 但主键列在我使用的任何数据库引擎中都不能为空。
-
@ÁlvaroGonzález 是的,没错。我只是不知道为什么 SQLite 允许它为空。
-
@huy 签入documentation 怎么样?第 3.5 节
-
对于 sqlite 中的主键关联,您应该使用 INTEGER,而不是 INT - 请参阅 sqlite.org/lang_createtable.html#rowid
-
@huy 随意回答您自己的问题(这是允许和鼓励的),但请不要在问题中包含答案 ;-)