插入或替换仅适用于数据库中的 1 行
Posted
技术标签:
【中文标题】插入或替换仅适用于数据库中的 1 行【英文标题】:INSERT OR REPLACE only works with 1 row in database 【发布时间】:2021-03-18 06:25:22 【问题描述】:当表中只有一行并且恰好是被替换的那一行时,INSERT OR REPLACE 起作用。但是,当表中有多行时,INSERT OR REPLACE 只是插入并创建一个副本!
例如,如果我创建一个 eventId = '123' 的条目。然后尝试用 eventId = '123' 和 roomnumber 写另一个条目,该条目与第一个条目不同,INSERT OR REPLACE 将起作用。但是,如果表中有多个行,则会创建重复。这是我的代码:
String createSql = "CREATE TABLE IF NOT EXISTS events (\n"
+ " eventId VARCHAR(20) PRIMARY KEY ON CONFLICT REPLACE,\n"
+ " roomNumber VARCHAR(20) NOT NULL,\n"
+ " startTime TIMESTAMP NOT NULL,\n"
+ " endTime TIMESTAMP NOT NULL,\n"
+ " name VARCHAR(250),\n"
+ " isVIP BOOLEAN NOT NULL,\n"
+ " capacity INTEGER(20) NOT NULL, \n"
+ " UNIQUE (eventId) \n"
+ ");";
String sql = "INSERT OR REPLACE INTO events (eventId, roomNumber, startTime, endTime, capacity, name, isVIP)" + " Values('"+event.getID()+"', '"+event.getRoomNumber()+"', '"+event.getStartTime()+"', '"+event.getEndTime()+"', '"+event.getCapacity()+"', '"+event.getName()+"', '"+event.getVIPStatus()+"')";
【问题讨论】:
【参考方案1】:我会阅读此主题以获取有关 REPLACE 工作原理的更多信息。
https://***.com/questions/29539838/replace-versus-insert-in-sql#:~:text=According%20to%20the%20documentation%2C%20the,the%20new%20row%20is%20inserted.
另外我建议只尝试“REPLACE”,因为它起到 INSERT 的作用,但会在发生冲突时替换。
【讨论】:
感谢回复,但REPLACE也不起作用以上是关于插入或替换仅适用于数据库中的 1 行的主要内容,如果未能解决你的问题,请参考以下文章
contentobserver 仅适用于插入和删除,但不适用于更新
Android FindViewById 仅适用于子布局(列表视图行),不适用于父布局中的 TextView