android如何创建与完善价值两个现有表之间的关系?

标签: sqlite Android
发布时间: 2016/9/26 4:12:11
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有两个现有表,工作台和 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︰ 附近的"外交": 语法错误 (代码 1):,编译时︰ ALTER TABLE WorkObjects 添加列 JobID 整数默认 1 外国 KEY(JobID) 引用 Jobs(jobsID)

怎么了?

解决方法 1:

外键子句是表约束。 ALTER TABLE 并不支持表约束。

你必须使外键约束的列约束︰

ALTER TABLE WorkObjects
ADD COLUMN JobID INTEGER DEFAULT 1 REFERENCES Jobs(jobsID);
Error: Cannot add a REFERENCES column with non-NULL default value

哦好吧。您必须重新创建表。

官方微信
官方QQ群
31647020