我可以使用外键来隐式rowid吗?

时间:2016-11-06 19:26:30

标签: sql sqlite foreign-keys

我想创建一个支持“友谊”的数据库。

我想出了(但不确切知道它是否有效):

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)
  )"

这会有用吗?

1 个答案:

答案 0 :(得分:0)

documentation说:

  

父键是外键约束引用的父表中的列或列集。这通常是(但不总是)父表的主键。父键必须是父表中的一个或多个命名列,而不是rowid。

请注意隐藏的rowid值不保证保留其值(例如,在VACUUM之后),因此在任何情况下,最好将父键设为明确命名的列。< / p>