1

我正在查看一些定义如下的数据库表:

这是第一张桌子——

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 约束。那么,这种语法正确吗?但这是大型成功运行系统的一部分,所有表都只是这样定义的。所以,我假设我错过了一些东西。

谢谢

4

1 回答 1

1

不,除非您创建外键约束。但首先,您需要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)
);

首要的关键

来源:SQLite 外键支持

于 2012-09-09T14:40:14.127 回答