Sql 为什么在RAISE()之前需要选择?

Sql 为什么在RAISE()之前需要选择?,sql,sqlite,triggers,Sql,Sqlite,Triggers,我正在学习SQLite中的触发器,我发现RAISE的语法有些令人惊讶,因为它需要一个SELECT才能工作 例如,此查询将失败,错误为:near RAISE:syntax Error,因为我没有在RAISE之前添加SELECT CREATE TRIGGER mytrigger BEFORE INSERT ON mytable BEGIN RAISE(FAIL, "Activated - mytrigger."); END; 为什么在加薪之前需要选择。这仅仅是一个任意规则,还是有更多我不明

我正在学习SQLite中的触发器,我发现RAISE的语法有些令人惊讶,因为它需要一个SELECT才能工作

例如,此查询将失败,错误为:near RAISE:syntax Error,因为我没有在RAISE之前添加SELECT

CREATE TRIGGER mytrigger
BEFORE INSERT ON mytable
BEGIN
    RAISE(FAIL, "Activated - mytrigger.");
END;

为什么在加薪之前需要选择。这仅仅是一个任意规则,还是有更多我不明白的地方?

因为它是一个函数,就像其他函数一样,例如LOWER或TRIM,不是一个语句,不能单独执行。

所以这适用于每个函数?它必须先进行选择才能工作?另外,这是否意味着RAISE以表格的形式返回结果?是的,这适用于任何函数。您需要一个上下文选择、更新、删除。。。它可以在其中执行。从文档:…SQLITE_约束的错误代码将返回到应用程序,同时返回指定的错误消息。。。