如何在两个现有表之间创建具有默认值的关系?
How to create a relation with a defaule value between two existing tables?
我有两个现有表,workTable 和 table_jobs。我想更新我的工作表并使用默认值创建与 table_jobs 的关系。这是我试过的:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion){
case 3:{
int jobid = insertJobWithoutClosing(new Job("Default", Color.rgb(0, 0, 255)), db);
db.execSQL("ALTER TABLE " + workTable + " ADD COLUMN " + colJobID + " INTEGER DEFAULT " + jobid + " FOREIGN KEY("+colJobID+") REFERENCES "+table_jobs+"("+job_ID+")");
}
}
这给了我以下异常:
android.database.sqlite.SQLiteException: near "FOREIGN": syntax error (code 1): , while compiling: ALTER TABLE WorkObjects ADD COLUMN JobID INTEGER DEFAULT 1 FOREIGN KEY(JobID) REFERENCES Jobs(jobsID)
怎么了?
Here there is a well explained answer for this 好像只有在创建table的时候才可以加外键。您可以将数据移动到新的临时 table,然后使用外键约束重新创建原始数据。
FOREIGN KEY 子句是一个 table 约束。
ALTER TABLE 不支持 table 约束。
您必须将外键约束设为列约束:
ALTER TABLE WorkObjects
ADD COLUMN JobID INTEGER DEFAULT 1 REFERENCES Jobs(jobsID);
Error: Cannot add a REFERENCES column with non-NULL default value
好吧。您必须重新创建 table.
我有两个现有表,workTable 和 table_jobs。我想更新我的工作表并使用默认值创建与 table_jobs 的关系。这是我试过的:
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
switch (oldVersion){
case 3:{
int jobid = insertJobWithoutClosing(new Job("Default", Color.rgb(0, 0, 255)), db);
db.execSQL("ALTER TABLE " + workTable + " ADD COLUMN " + colJobID + " INTEGER DEFAULT " + jobid + " FOREIGN KEY("+colJobID+") REFERENCES "+table_jobs+"("+job_ID+")");
}
}
这给了我以下异常:
android.database.sqlite.SQLiteException: near "FOREIGN": syntax error (code 1): , while compiling: ALTER TABLE WorkObjects ADD COLUMN JobID INTEGER DEFAULT 1 FOREIGN KEY(JobID) REFERENCES Jobs(jobsID)
怎么了?
Here there is a well explained answer for this 好像只有在创建table的时候才可以加外键。您可以将数据移动到新的临时 table,然后使用外键约束重新创建原始数据。
FOREIGN KEY 子句是一个 table 约束。 ALTER TABLE 不支持 table 约束。
您必须将外键约束设为列约束:
ALTER TABLE WorkObjects
ADD COLUMN JobID INTEGER DEFAULT 1 REFERENCES Jobs(jobsID);
Error: Cannot add a REFERENCES column with non-NULL default value
好吧。您必须重新创建 table.