![](/img/trans.png)
[英]Is there a way to insert a row in a father table with autoincrement primary key and a child table in the same transaction in SQL?
[英]Insert into table with autoincrement primary key
我正在创建一个表,如下所示:
@Override
public void onCreate(SQLiteDatabase db) {
String sql =
"CREATE TABLE IF NOT EXISTS users (" +
"_id INTEGER PRIMARY KEY, " +
"name TEXT NOT NULL, " +
"password TEXT NOT NULL);";
db.execSQL(sql);
sql = "INSERT INTO users VALUES ('testuser', 'textpassword')";
db.execSQL(sql);
}
但是,当我尝试插入用户时,出现以下异常:
android.database.sqlite.SQLiteException:表用户有3列,但提供了2个值(代码1):,而在编译时:INSERT INTO users VALUES('testuser','textpassword')
因为_id
是主键,所以为什么要使用它呢? 我也尝试过AUTOINCREMENT
但是它不起作用。
尝试这个
@Override
public void onCreate(SQLiteDatabase db) {
String sql =
"CREATE TABLE IF NOT EXISTS users (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " +
"name TEXT NOT NULL, " +
"password TEXT NOT NULL);";
db.execSQL(sql);
sql = "INSERT INTO users(name, password) VALUES ('testuser', 'textpassword')";
db.execSQL(sql);
}
AUTOINCREMENT NOT NULL is missing in your insert query which will increase the value of _id field automatically.
您应该指定要插入的值:
sql = "INSERT INTO users(name, password) VALUES ('testuser', 'textpassword')";
无需指定AUTOINCREMENT: 在INSERT上,如果未明确为ROWID或INTEGER PRIMARY KEY列指定值,则将自动用未使用的整数填充该整数,通常比当前使用的最大ROWID多一个。 无论是否使用AUTOINCREMENT关键字,都是如此。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.