Android Sqlite table 列外键?
Android Sqlite table column foreign keys?
我正在为我的 android 项目创建一个相当简单的 sqlite 数据库。好久没写msql命令了,更不用说sqlite了。
为了让这个问题简单化,假设我有两个 table。一个 table 用于 dogs
,另一个用于 owners
。
在 dogs
中将有一列用于保存所有者的 _id
,这将是另一个 table 的主键。
我这辈子都记不起如何在 sqlite 中执行此操作,或者如果我能记起的话。
我正在用这个字符串创建狗 table :
private static final String CREATE_TABLE_DOGS = "CREATE TABLE"
+ TABLE_DOGS + "(" + COLUMN_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COLUMN_NAME + " TEXT NOT NULL, "
+ COLUMN_OWNER + " INTEGER );";
SQLite 默认不启用外键。每次使用数据库前都需要执行pragma FOREIGN_KEYS=ON;
。
要创建实际的外键关系,请像这样为您的狗 table 添加一列:FOREIGN KEY(owners_id) REFERENCES owners(_id)
。您还应该定义约束违规规则。
有关 SQLite 外键的更多信息,请查看 https://www.sqlite.org/foreignkeys.html
我正在为我的 android 项目创建一个相当简单的 sqlite 数据库。好久没写msql命令了,更不用说sqlite了。
为了让这个问题简单化,假设我有两个 table。一个 table 用于 dogs
,另一个用于 owners
。
在 dogs
中将有一列用于保存所有者的 _id
,这将是另一个 table 的主键。
我这辈子都记不起如何在 sqlite 中执行此操作,或者如果我能记起的话。
我正在用这个字符串创建狗 table :
private static final String CREATE_TABLE_DOGS = "CREATE TABLE"
+ TABLE_DOGS + "(" + COLUMN_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ COLUMN_NAME + " TEXT NOT NULL, "
+ COLUMN_OWNER + " INTEGER );";
SQLite 默认不启用外键。每次使用数据库前都需要执行pragma FOREIGN_KEYS=ON;
。
要创建实际的外键关系,请像这样为您的狗 table 添加一列:FOREIGN KEY(owners_id) REFERENCES owners(_id)
。您还应该定义约束违规规则。
有关 SQLite 外键的更多信息,请查看 https://www.sqlite.org/foreignkeys.html