2012-03-31 99 views
0

嗨我想创建一个sqldatabase,我试图在oncreate方法中定义我的外键。我只是想知道这是否会是这样的事情,正确的定义:外键定义

路由表:ID,名称

停止表:ID,名称

时间表:ID,外键总线,外键停止

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+"));" 
       ); 
    } 

回答

2

没关系。请记住,你需要启用:

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

的“+”字是前KEY_TIME + " integer,"

+0

两次在OnCreate即时猜测? – BoneStarr 2012-03-31 16:33:35

+0

我编辑了我的答案。 – 2012-03-31 16:36:32

+0

谢谢,非常感谢! – BoneStarr 2012-03-31 16:44:55