【问题标题】:INSERT OR REPLACE only works with 1 row in database插入或替换仅适用于数据库中的 1 行
【发布时间】: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


    【解决方案1】:

    我会阅读此主题以获取有关 REPLACE 工作原理的更多信息。

    https://stackoverflow.com/questions/29539838/replace-versus-insert-in-sql#:~:text=According%20to%20the%20documentation%2C%20the,the%20new%20row%20is%20inserted.

    另外我建议只尝试“REPLACE”,因为它起到 INSERT 的作用,但会在发生冲突时替换。

    【讨论】:

    • 感谢回复,但REPLACE也不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2016-05-31
    • 2021-07-08
    • 1970-01-01
    • 2015-10-12
    • 2014-01-30
    • 1970-01-01
    相关资源
    最近更新 更多