insert或replace只对数据库中的一行起作用

rdrgkggo  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(244)

当表中只有一行并且恰好是被替换的行时,insert或replace起作用。但是,当表中有多行时,insert或replace只是inserts并创建一个副本!
例如,如果我创建一个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()+"')";
hsgswve4

hsgswve41#

我会阅读这篇文章来获得关于replace如何工作的更多信息。
https://stackoverflow.com/questions/29539838/replace-versus-insert-in-sql#:~:text=根据%20到%20文档%2c%20,插入了%20新的%20行%20。
另外,我建议尝试使用“replace”,因为它的功能是insert,但在冲突时会替换。

相关问题