我有这样的表:
CREATE TABLE "Date_Table"
("Year" DATETIME ,
"Month1" INTEGER,
"Month2" INTEGER,
"ID" INTEGER)
然后我创建了2列的inique索引
CREATE UNIQUE INDEX field1_field2_idx ON table_name(Year, ID)
当我完成时,我想插入如果没有这种记录,并替换,如果有。
INSERT OR REPLACE INTO Date_Table(Year, Month1, Month2, ID) Values(2012, 1, ?,1)
此时所有内容都应该如此,但如果我这样做,请插入:
INSERT OR REPLACE INTO Date_Table(Year, Month1, Month2, ID) Values(2012, ?, 1,1)
它将所有删除Month1的记录替换为NULL,但我只想更新那一行Month2列。
也许有人可以帮我解决这个问题。这是关于SQLite
答案 0 :(得分:0)
这个问题是重复的: SQLite - UPSERT *not* INSERT or REPLACE
对于您的架构尝试类似:
INSERT OR REPLACE INTO Date_Table (Year, Month1, Month2, ID)
Values(
2012,
(select Month1 from Data_Table where Year = 2012 and ID = 1),
1,1)
已编辑OP评论:
您可以指定select on insert。
而不是值INSERT OR REPLACE INTO Date_Table (Year, Month1, Month2, ..., Month12, ID)
select
2012 as Year,
Month1,
Month2,
...
1 as Month12,
ID
from Data_Table
where Year = 2012 and ID = 1
免责声明:未经测试。