我试图在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;
非常感谢你。
答案 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;