SQLITE和外键

时间:2012-09-09 14:32:29

标签: sqlite foreign-keys

我正在查看一些像这样定义的数据库表:

这是第一个表 -

CREATE TABLE Point 
(

    Position integer unique not null,  
    Name text not null,                
);

第二个表是这样的:

CREATE TABLE namesPerPoint 
(

    PointKey integer not null,            -- unique ROWID in points table
    name text unique not null
);

现在,我的问题是sqlite db将如何知道PointKey引用Positions表中的rowid。为了方便用户,它在评论中提到了它。如果我自己必须这样做,我将使用FOREIGN KEY约束。 那么,这种语法是否正确?但这是大型成功运行系统的一部分,所有表都只是这样定义的。所以,我假设我错过了一些东西。

由于

1 个答案:

答案 0 :(得分:0)

不,除非您创建外键约束。但首先,您需要turn on外键支持

sqlite> PRAGMA foreign_keys = ON;

将主键添加到主表

CREATE TABLE Point 
(

    Position integer PRIMARY KEY,  
    Name text not null,                
);

然后添加外键

CREATE TABLE namesPerPoint 
(
    PointKey integer not null,            -- unique ROWID in points table
    name text unique not null,
    FOREIGN KEY (PointKey) REFERENCES Point(Position)
);

PRIMARY KEY

<强> Source: SQLite Foreign Key Support