【发布时间】: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()+"')";
【问题讨论】:
标签: java sqlite replace insert