[英]sqlite near syntax error
我是sql的新手,正在嘗試創建一個具有對另一個表的外鍵引用的表。 我不斷收到錯誤的語法錯誤,無法弄清原因。 請參閱下面的sql語句
第一桌
sqlite> CREATE TABLE nl_central_teams (
...> id INTEGER PRIMARY KEY AUTOINCREMENT,
...> team_name VARCHAR(64) NOT NULL,
...> city VARCHAR(64) NOT NULL,
...> main_color VARCAR(64) NOT NULL,
...> created_at DATETIME NOT NULL,
...> updated_at DATETIME NOT NULL
...> );
第一張桌子工作正常。
第二張桌子
sqlite> CREATE TABLE managers(
...> id INTEGER PRIMARY KEY AUTOINCREMENT,
...> first_name VARCHAR(64) NOT NULL,
...> last_name VARCHAR(64) NOT NULL,
...> team_id INTEGER,
...> FOREIGN KEY(team_id) REFERENCES nl_central_teams(id),
...> created_at DATETIME NOT NULL,
...> updated_at DATETIME NOT NULL
...> );
錯誤:“ created_at”附近:語法錯誤
我覺得我的語法是正確的,但無法弄清楚為什么會出現此錯誤。 任何幫助,將不勝感激,
外鍵約束應在CREATE TABLE定義的末尾。
您的經理的CREATE TABLE語句應如下所示:
CREATE TABLE managers(
id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name VARCHAR(64) NOT NULL,
last_name VARCHAR(64) NOT NULL,
team_id INTEGER,
created_at DATETIME NOT NULL,
updated_at DATETIME NOT NULL,
FOREIGN KEY(team_id) REFERENCES nl_central_teams(id)
);
看到這里: http : //sqlfiddle.com/#!7/f3f38/1/0
問題行實際上是您的錯誤引用上方的那一行:
FOREIGN KEY(team_id) REFERENCES nl_central_teams(id),
SQLite中的外鍵支持有些棘手。 由於以下原因之一,它可能無法正常工作:
您使用的是3.6.9或更高版本,但是特定安裝的編譯沒有外鍵支持。 (請參閱http://www.sqlite.org/foreignkeys.html#fk_enable )
為了在SQLite中使用外鍵約束,必須在未定義SQLITE_OMIT_FOREIGN_KEY或SQLITE_OMIT_TRIGGER的情況下編譯庫。 如果定義了SQLITE_OMIT_TRIGGER但未定義SQLITE_OMIT_FOREIGN_KEY,則SQLite的行為與版本3.6.19之前的行為相同-將解析外鍵定義,並可以使用PRAGMA foreign_key_list對其進行查詢,但不會強制執行外鍵約束。
您有一個支持外鍵支持的安裝,但尚未啟用。 (請參閱http://www.sqlite.org/faq.html#q22 。)
從3.6.19版本開始,SQLite支持外鍵約束。 但是默認情況下,外鍵約束的執行是關閉的(為了向后兼容)。 要啟用外鍵約束實施,請運行PRAGMA foreign_keys = ON或使用-DSQLITE_DEFAULT_FOREIGN_KEYS = 1進行編譯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.