如何在两个现有表之间创建具有默认值的关系?

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.