huy*_*huy 7 mysql sql database sqlite null
我有这个代码,你可以尝试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);
Run Code Online (Sandbox Code Playgroud)
如果我使用 SQLite,我可以添加 NULL 值,但如果我使用 MySQL,则不能。我会得到这个错误:
Schema Error: Error: ER_BAD_NULL_ERROR: Column 'ID' cannot be null
Run Code Online (Sandbox Code Playgroud)
为什么我可以将它添加到 SQLite 中?
huy*_*huy 10
感谢@astentx 的建议。我检查了文档,它说:
根据 SQL 标准,PRIMARY KEY 应始终暗示 NOT NULL。不幸的是,由于某些早期版本中的错误,SQLite 中并非如此。除非列是 INTEGER PRIMARY KEY 或表是WITHOUT ROWID 表或列声明为 NOT NULL,否则 SQLite 允许在 PRIMARY KEY 列中使用 NULL 值。SQLite 可以修复以符合标准,但这样做可能会破坏遗留应用程序。因此,决定仅记录 SQLite 在大多数 PRIMARY KEY 列中允许 NULL 的事实。