历史结构是
CREATE TABLE 'history'
(
'id' INTEGER PRIMARY KEY autoincrement NOT NULL,
'symbol' INTEGER NOT NULL,
'shares' INTEGER NOT NULL,
'price' text NOT NULL,
'transaction' datetime NOT NULL,
'user_id' INTEGER NOT NULL
)
insert sql语句失败:
INSERT INTO history
(symbol,
shares,
price,
transaction,
user_id)
VALUES ('MSFT',
10,
25,
'2017-02-26 21:50:10',
3)
无法解决问题。请帮忙。
答案 0 :(得分:1)
transaction
是reserved word,因此当您想将其用作列名时,应该加倍引用它:
INSERT INTO history
(symbol, shares, price, "transaction", user_id) ...
^ ^
最好是为列使用不同的名称,这样您就不必担心引用内容了。
此外,在SQL中,双引号用于标识符,单引号用于字符串文字,因此您应养成在create table
中使用双引号的习惯。 SQLite会让你逃避很多事情,但良好的习惯(如正确引用)比坏习惯更好(例如依赖SQLite对SQL的粗略解释)。