1

次のように定義されたいくつかのデータベース テーブルを見ています。

これが最初のテーブルです。

CREATE TABLE Point 
(

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

2番目のテーブルは次のようになります。

CREATE TABLE namesPerPoint 
(

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

さて、私の質問は、PointKeyがPositionsテーブルのrowidを参照していることをsqlite dbがどのように知るかです。ユーザーの利便性のために、ここでコメントで言及されています。自分でやらなければならない場合は、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 に答える