如何使用从 select 语句获取的值更新 sqlite_master?

问题描述 投票:0回答:1

如何使用从 select 语句获取的值更新 sqlite_master ?

例如下面我想给sqlite_master添加一个check语句:

update sqlite_master set sql = substr (sql, 1, length (sql) - 1) || ', check (CountryName in ' || select name from country_table || ' )) )'

但是,我收到以下消息

"SQLite3 Error 1 - near 'select": syntax error.

为了比较,如果我执行以下操作,我的命令就有效:

update sqlite_master set sql = substr (sql, 1, length(sql) - 1) || ', check (CountryName in ''Iceland'', ''Spain'' )) )'
sqlite
1个回答
1
投票

我相信您的问题是由于:-

CHECK 约束的表达式不能包含子查询。

此外,您也许应该注意:-

SQLite 在创建数据库时创建模式表,并在 SQLite 用户提交 DDL 语句执行时修改其内容。一般情况下用户无需修改,一旦修改,将承担数据库损坏的风险

修改 sqlite_master 的正确/最安全的方法是相应地修改表,并将 sqlite_master 的修改留给 SQLite。

© www.soinside.com 2019 - 2024. All rights reserved.