提问人:ZecosMAX 提问时间:2/5/2023 最后编辑:GMBZecosMAX 更新时间:2/5/2023 访问量:52
SQLite 指定主键
SQLite specifying primary key
问:
简而言之,我有这个条款:
CREATE TABLE IF NOT EXISTS `journalData`
(
`JD_Key` INTEGER PRIMARY KEY AUTOINCREMENT,
`JD_Event_Key` INTEGER,
`JD_VarCount` INTEGER,
`JD_VarTypes` TEXT,
`JD_VarValues` TEXT,
`JD_EventDate` TEXT
);
INSERT INTO `journalData`
VALUES (24, 0, '', '', '04.02.2023 20:26:18');
在 AUTOINCREMENT (https://www.sqlitetutorial.net/sqlite-autoincrement/) 的 SQLite 教程之后,它说了以下内容:
其次,在不指定列值的情况下插入另一行:
person_id
INSERT INTO people (first_name,last_name) VALUES('William','Gate');
暗示,您可以向表中添加行,而无需指定表的主键,但我收到此错误:
未捕获的错误:表 journalData 有 6 列,但提供了 5 个值
我在这里做错了什么?在提到插入之前,我尝试使用键添加单行。但是我一直收到这个错误
答:
1赞
ZecosMAX
2/5/2023
#1
我找到了一个解决方案,似乎错误有些误导,我必须指定列名。
但是,如果我在表中指定所有值,则没有必要指定列名,因此,在测试期间,我假设这里的语法类似于MySQL,根据我的经验,您不必指定名称在这种情况下。
所以下面的查询对我有用。
INSERT INTO `journalData`
(JD_Event_Key, JD_VarCount, JD_VarTypes, JD_VarValues, JD_Event_Date)
VALUES (24,0,'','','04.02.2023 20:26:18');
评论
2赞
marc_s
2/5/2023
无论如何,始终在子句中显式指定列是推荐的且公认的最佳实践 - 只要习惯了它,你甚至不会回头......INSERT INTO
0赞
ZecosMAX
2/5/2023
@marc_s,似乎很公平
评论