Определение внешних ключей - PullRequest
0 голосов
/ 31 марта 2012

Привет! Я пытаюсь создать базу данных sqld и пытаюсь определить свои внешние ключи в методе oncreate. Я просто хотел знать, будет ли это правильное определение для чего-то вроде этого:

Таблица маршрутов: идентификатор, имя

Стоп таблицы: идентификатор, имя

Расписание: идентификатор, внешний ключ к шине, внешний ключ для остановки

    public void onCreate(SQLiteDatabase db) {
        // TODO Auto-generated method stub
        db.execSQL("CREATE TABLE " + DATABASE_STOPTABLE + " (" +
        KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        KEY_STOPS + " TEXT NOT NULL);" +
        "CREATE TABLE " + DATABASE_BUSTABLE + " (" + 
        KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        KEY_BUSES + " TEXT NOT NULL);" +
        "CREATE TABLE " + DATABASE_TIMETABLE + " (" + 
        KEY_ROWID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
        KEY_BUSES + " TEXT NOT NULL, " +
                    + KEY_TIME + " integer,"
                    + " FOREIGN KEY ("+KEY_TIME+") REFERENCES "+DATABASE_STOPTABLE+"         ("+KEY_STOPS+"), " +
                      + " FOREIGN KEY ("+KEY_TIME+") REFERENCES "+DATABASE_BUSTABLE+"         ("+KEY_BUSES+"));"
                );
    }

1 Ответ

2 голосов
/ 31 марта 2012

Все в порядке.Помните, что вам нужно включить:

@Override
public void onOpen(SQLiteDatabase db) {
    super.onOpen(db);
    if (!db.isReadOnly()) {
        db.execSQL("PRAGMA foreign_keys=ON;");
    }
}

Символ '+' стоит дважды перед KEY_TIME + " integer,"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...