【发布时间】:2021-06-16 10:38:11
【问题描述】:
在给定as_counter,t_ms 列表且列表中存在as_counter 和t_ms 值的情况下,我想删除表中的行。
数据库
CREATE TABLE Event(
as_counter TEXT NOT NULL,
t_ms TEXT NOT NULL,
event_map TEXT NOT NULL,
PRIMARY KEY (as_counter, t_ms)
);
insertEvent:
INSERT OR REPLACE INTO Event (as_counter, t_ms, event_map)
VALUES (?, ?, ?);
deleteEventListByKey:
DELETE FROM Event
WHERE (as_counter,t_ms) IN (VALUES(?,?))
我尝试过的方法是在 deleteEventListByKey 中。但是我收到了
'(', ')', '.', <binary like operator real>, BETWEEN or IN expected, got ',' 的错误。我不确定为什么会收到此错误。
我正在尝试通过的测试用例
@Test
fun `delete events by list of primary keys`() {
queries.insertEvent("1", "1", "{Click,Open}")
queries.insertEvent("1", "2", "{Click,Close},{Read,Open}")
queries.insertEvent("1", "3", "{Click,Open}")
queries.insertEvent("2", "3", "{Click,Open}")
queries.deleteEventsByKey([("1,2"),("1,1")])
assertThat(queries.selectAllEvents().executeAsList())
.containsExactly(
Event(
as_counter = "1",
t_ms = "1",
event_map = "{Click,Open}"
),
Event(
as_counter = "1",
t_ms = "2",
event_map = "{Click,Close},{Read,Open}"
)
)
}
有谁知道如何为 SQLdelight(SQLLite) 编写查询,其中给定列表输入,如果数据库中存在 as_counter 和 t_ms,则删除表中的条目?
【问题讨论】:
标签: android sqlite kotlin kotlin-multiplatform sqldelight