我有一个表,在列FirstName
、LastName
上有一个复合主键。我想设置Age
列,但不设置Address
。如果不存在该人员的行,则创建该行(并将Address
设置为NULL)。
我试着这样REPLACE INTO:
REPLACE INTO
answers
(
FirstName,
LastName,
Age
)
VALUES
(
:first_name,
:last_name,
:age
)
但这也会使Address
无效。
我发现了一些与ON DUPLICATE
有关的东西,但似乎只有mysql才有,然后我听说ON CONFLICT
可以做类似的事情,所以我开始阅读this page,感到非常困惑。我也找不到任何使用ON CONFLICT
和复合主键的例子。
我使用的是SQLite 3.31.1。
1条答案
按热度按时间s4chpxco1#
您可以使用
UPSERT
执行此操作:或者,如果您不想在插入的列中设定
Address
的值:如果表中已经存在
:first_name
和:last_name
的组合,则将执行UPDATE
语句,这不会影响列Address
。请参阅demo。