我正在为'user'表使用auto_increment主键。我的问题是,我可以使用相同的用户ID(主键)作为“用户日志”表的主键吗?我不应该这样做有什么主要原因吗?
我对实施的想法: 要做到这一点,我会让用户创建一个条目(名称,电子邮件传递等),一旦完成,通过从“用户”表中获取密钥并将其传递到“用户日志”条目来创建“用户日志”创建方法作为外键?或者此时它仍然会被称为主键?
一个简单的代码示例会很棒。这就是我所拥有的:
// Create the table
public void onCreate(SQLiteDatabase db) {
// SQL statement to create book table
String CREATE_USER_TABLE = "CREATE TABLE userLog ( " +
"userID INTEGER PRIMARY KEY, " +
"date TEXT )";
// create directory table
db.execSQL(CREATE_USERLOG_TABLE);
}
//Add entry to the table using value from user
public void addEntry(UserLogEntry entry, UserEntry userEntry){
Log.d("addEntry", entry.toString());
// 1. get reference to writable DB
SQLiteDatabase db = this.getWritableDatabase();
// 2. create ContentValues to add key "column"/value
ContentValues values = new ContentValues();
values.put(KEY_USERID, userEntry.getUserID());
values.put(KEY_DATE, entry.getDate());
// 3. insert
db.insert(TABLE_USERLOG, // table
null, //nullColumnHack
values); // key/value -> keys = column names/ values = column values
// 4. close
db.close();
}
因为CL指出了这一点,所以这是行不通的。我需要一个唯一的密钥,并将用户ID添加为新列。我只是在创建userslog时从users表中提取userid,这应解决该问题。