使用外键创建表

时间:2014-05-02 07:52:38

标签: sqlite

我试图在sqlite中以编程方式创建一个表。但是当我试图创建一个外键约束时,它给了我一个syntacs错误。任何人都可以告诉我原因。

这是我的代码:

CREATE TABLE tblUser (ID INT64 Primary Key, Name NVARCHAR(100) NOT NULL, EMail
NVARCHAR(100) NOT NULL); 

CREATE TABLE tblMachine (ID INT64 Primary Key, Name NVARCHAR(100) NOT NULL,
ProcessorID NVARCHAR(100) NOT NULL, BiosID NVARCHAR(100) NOT NULL);

CREATE TABLE tblLicenseInfo (ID INT64 Primary Key, UserID INT64 NOT NULL,
MachineID INT64 NOT NULL, ExpirationDate DATETIME NOT NULL, DateOfChange DATETIME
NOT NULL, LicenseKey NVARCHAR(100) NOT NULL),

FOREIGN KEY (UserID) REFERENCES tblUser.ID,
FOREIGN KEY (MachineID) REFERENCES tblMachine.ID;  
非常感谢你。

2 个答案:

答案 0 :(得分:1)

您需要在FOREIGN KEY命令的括号内包含<{1}}子句。查看CREATE TABLE syntax diagram,其中CREATE TABLE子句是表约束。

此外,另一个表的引用列需要用括号表示,而不是用点表示法表示。这在syntax diagram for the FOREIGN KEY clause

中有所描述

因此,您的FOREIGN KEY语句应如下所示:

CREATE TABLE

答案 1 :(得分:0)

你需要一个选项来做:在php试试

$db = new SQLite3("../SQLLite/test.db");
$db->exec('PRAGMA foreign_keys = ON');

例如,在commande中还有其他方法可用于

sqlite> PRAGMA foreign_keys = ON;

来源:https://www.sqlite.org/foreignkeys.html