2017-02-26 47 views
0

历史的结构SQL Synatax错误datetime列

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 
     ) 

插入SQL语句失败的:

INSERT INTO history 
     (symbol, 
     shares, 
     price, 
     transaction, 
     user_id) 
VALUES ('MSFT', 
     10, 
     25, 
     '2017-02-26 21:50:10', 
     3) 

未能解决该问题。请帮忙。

+1

你可以发布错误消息吗? –

回答

1

transactionreserved word所以,当你想用它作为列名,你应该双引号是:

INSERT INTO history 
(symbol, shares, price, "transaction", user_id) ... 
         ^  ^

更好的办法是使用一个不同的名称列,这样你就不必担心引用的东西。

此外,在SQL中,双引号用于标识符,单引号用于字符串文本,因此您应该习惯于在您的create table中使用双引号。 SQLite会让你逃避很多事情,但是良好的习惯(比如适当的引用)总比坏习惯好(比如依靠SQLite对SQL的松散解释)。