【问题标题】:Why is SELECT needed before RAISE()?为什么在 RAISE() 之前需要 SELECT?
【发布时间】:2013-09-11 08:22:43
【问题描述】:

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

例如,此查询将失败并返回 Error: near "RAISE": syntax error,因为我没有在 RAISE() 之前添加 SELECT

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

为什么在RAISE() 之前需要SELECT。这只是一个武断的规则,还是我不明白的更多内容?

【问题讨论】:

    标签: sql sqlite triggers


    【解决方案1】:

    因为RAISE() 是一个和其他函数一样的函数(例如LOWER()TRIM()),而不是一个语句并且不能单独执行。

    【讨论】:

    • 所以这适用于每个功能?它必须先有SELECT才能工作?还有,这是否意味着RAISE()会以表格的形式返回结果?
    • 是的,这适用于任何功能。您需要一个可以在其中执行它的上下文(SELECT、UPDATE、DELETE...)。来自文档:...SQLITE_CONSTRAINT 错误代码连同指定的错误消息一起返回给应用程序...
    猜你喜欢
    • 2015-08-19
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多