2016-11-06 4 views
0

Ich möchte eine Datenbank erstellen, die "Freundschaften" unterstützt.Kann ich einen Fremdschlüssel für die implizite Rowid verwenden?

Ich habe kommen mit (aber nicht genau wissen, ob es funktioniert):

users: 
    "create table if not exists user (
    name text not null, 
    password text not null 
)" 
friendships: 
    "create table if not exists friendship (
    user1 int not null, 
    user2 int not null, 
    foreign key(user1) references user(rowid), 
    foreign key(user2) references user(rowid) 
)" 

Wird diese Arbeit?

+1

Was ist passiert, als Sie es versucht haben? –

Antwort

0

Die documentation sagt:

Die geordneten Schlüssel die Spalte oder der Spalten in der übergeordneten Tabelle eingestellt, dass der Fremdschlüssel sich bezieht. Dies ist normalerweise, aber nicht immer der Primärschlüssel der übergeordneten Tabelle. Der übergeordnete Schlüssel muss eine benannte Spalte oder Spalten in der übergeordneten Tabelle sein, nicht die rowid.

Bitte beachten Sie, dass versteckten rowid Werte nicht ihre Werte garantiert halten (zum Beispiel nach einem VACUUM), so dass in jedem Fall ist es eine gute Idee wäre, den übergeordnete Schlüssel eine explizit benannten Spalte zu machen.

Verwandte Themen