我正在查看一些像这样定义的数据库表:
这是第一个表 -
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约束。 那么,这种语法是否正确?但这是大型成功运行系统的一部分,所有表都只是这样定义的。所以,我假设我错过了一些东西。
由于
答案 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