ON CONFLICT 甚至没有用错误语法编译?
ON CONFLICT not even compile with error syntax?
我不太确定这是否是我使用的 SQLite 版本的问题。但实际上我并没有直接使用本机 SQLite (dll),我使用的是 System.Data.SQLite
版本 1.0.108.0
并且看起来这是我的 .NET 4.5 的唯一版本(最新)应用目标。
所以我想知道 System.Data.SQLite
的那个版本是否支持 ON CONFLICT
?
这只是 ON CONFLICT
的基本查询:
INSERT INTO CUSTOMER(CUSTOMER_ID, CUSTOMER_NAME) VALUES('C1','N1')
ON CONFLICT(CUSTOMER_ID)
DO UPDATE SET CUSTOMER_NAME=excluded.CUSTOMER_NAME
但是它会抛出这样的错误:
near "ON": syntax error:
如果 SQlite 版本低于 3.24.0(最近才发布),您将获得 near "ON": syntax error:
。
您可以使用 SELECT sqlite_version();
检索 SQLite 的版本,从而确定您的 SQLite 版本是否过低。
根据 :-
,语法似乎与在 SQL As Understood By SQLite - Upsert 处找到的示例的语法相匹配
SELECT sqlite_version();
CREATE TABLE phonebook(name TEXT PRIMARY KEY, phonenumber TEXT);
INSERT INTO phonebook(name,phonenumber) VALUES('Alice','704-555-1212')
ON CONFLICT(name) DO UPDATE SET phonenumber=excluded.phonenumber;
- 为演示添加了注释版本检查。
运行 此示例在 太低 版本的 SQLite 上导致:-
SELECT sqlite_version()
> OK
> Time: 0s
CREATE TABLE phonebook(name TEXT PRIMARY KEY, phonenumber TEXT)
> OK
> Time: 0.336s
INSERT INTO phonebook(name,phonenumber) VALUES('Alice','704-555-1212')
ON CONFLICT(name) DO UPDATE SET phonenumber=excluded.phonenumber
> near "ON": syntax error
> Time: 0s
和:-
我不太确定这是否是我使用的 SQLite 版本的问题。但实际上我并没有直接使用本机 SQLite (dll),我使用的是 System.Data.SQLite
版本 1.0.108.0
并且看起来这是我的 .NET 4.5 的唯一版本(最新)应用目标。
所以我想知道 System.Data.SQLite
的那个版本是否支持 ON CONFLICT
?
这只是 ON CONFLICT
的基本查询:
INSERT INTO CUSTOMER(CUSTOMER_ID, CUSTOMER_NAME) VALUES('C1','N1')
ON CONFLICT(CUSTOMER_ID)
DO UPDATE SET CUSTOMER_NAME=excluded.CUSTOMER_NAME
但是它会抛出这样的错误:
near "ON": syntax error:
如果 SQlite 版本低于 3.24.0(最近才发布),您将获得 near "ON": syntax error:
。
您可以使用 SELECT sqlite_version();
检索 SQLite 的版本,从而确定您的 SQLite 版本是否过低。
根据 :-
,语法似乎与在 SQL As Understood By SQLite - Upsert 处找到的示例的语法相匹配SELECT sqlite_version();
CREATE TABLE phonebook(name TEXT PRIMARY KEY, phonenumber TEXT);
INSERT INTO phonebook(name,phonenumber) VALUES('Alice','704-555-1212')
ON CONFLICT(name) DO UPDATE SET phonenumber=excluded.phonenumber;
- 为演示添加了注释版本检查。
运行 此示例在 太低 版本的 SQLite 上导致:-
SELECT sqlite_version() > OK > Time: 0s CREATE TABLE phonebook(name TEXT PRIMARY KEY, phonenumber TEXT) > OK > Time: 0.336s INSERT INTO phonebook(name,phonenumber) VALUES('Alice','704-555-1212') ON CONFLICT(name) DO UPDATE SET phonenumber=excluded.phonenumber > near "ON": syntax error > Time: 0s
和:-