2024年4月2日发(作者:)

sqlite3 on conflict 用法

在SQLite中,ON CONFLICT子句用于处理INSERT或

UPDATE语句中的冲突。它允许您指定在存在冲突时采取的

操作。

具体用法如下:

1. ON CONFLICT REPLACE:如果存在冲突,将覆盖现有行

的值。

```sqlite

INSERT OR REPLACE INTO table_name (column1, column2)

VALUES (value1, value2);

```

2. ON CONFLICT IGNORE:如果存在冲突,忽略该行而不执

行任何操作。

```sqlite

INSERT OR IGNORE INTO table_name (column1, column2)

VALUES (value1, value2);

```

3. ON CONFLICT FAIL:如果存在冲突,放弃整个INSERT

或UPDATE操作,并返回错误信息。

```sqlite

INSERT INTO table_name (column1, column2) VALUES

(value1, value2) ON CONFLICT FAIL;

```

4. ON CONFLICT DO NOTHING:如果存在冲突,放弃该行

的插入操作,但不返回错误信息。

```sqlite

INSERT INTO table_name (column1, column2) VALUES

(value1, value2) ON CONFLICT DO NOTHING;

```

5. ON CONFLICT DO UPDATE :如果存在冲突,执行指定的

更新操作。

```sqlite

INSERT INTO table_name (column1, column2) VALUES

(value1, value2) ON CONFLICT(column) DO UPDATE SET

column1 = new_value;

```

注意事项:

- ON CONFLICT子句必须与INSERT或UPDATE语句一起使

用。

- 需要在表的定义中指定冲突列的唯一约束(例如主键、唯一

索引等)才能执行ON CONFLICT操作。

- ON CONFLICT DO UPDATE子句需要指定要更新的列以及

更新新值的方法。