INSERT或REPLACE仅适用于数据库中的1行



INSERT OR REPLACE在表中只有一行并且恰好是被替换的行时工作。但是,当表中有多行时,INSERT OR REPLACE只插入并创建一个重复!

例如,如果我创建了一个eventId为"123"的条目。然后尝试写入另一个条目,其中eventId="123",roomnumber等于与第一个条目不同的值,INSERT或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()+"')";

我会阅读这个线程,了解有关REPLACE如何工作的更多信息。

https://stackoverflow.com/questions/29539838/replace-versus-insert-in-sql#:~:text=根据%20到%20文档%2C%20,插入了%20新的%20行%20。

此外,我建议尝试";REPLACE;因为它的作用是INSERT,但会在冲突时替换。

相关内容

  • 没有找到相关文章

最新更新