插入或替换仅适用于数据库中的 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

Javascript函数仅适用于表格的第一行[重复]

剑道网格在插入期间启用编辑,在编辑期间禁用(仅适用于一列)

将 DGV 中的单元格类型从 ComboBox 更改为 TextBox 仅适用于第 0 行?

js 替换 innerHTML 仅适用于没有 jQuery