这是我的CASE / WHEN语句。但是正如您可能看到的那样,我得到了这个错误。我不知道为什么
我要做的就是检测MAJKA字段中的内容何时发生更改。因此,如果MAJKA列的其他某些字段为空,请不要触摸它们,而是将值更改为MAJKA列中不为空的那些字段的新值。

SQL Error: near "UPDATE": syntax error  <CREATE TRIGGER [test]
AFTER UPDATE OF [MAJKA]
ON [unos_golub]
FOR EACH ROW
BEGIN

SELECT majka,
CASE WHEN majka=''

THEN
(UPDATE unos_golub SET broj_goluba=NEW.majka WHERE broj_goluba=OLD.majka)

ELSE
(UPDATE unos_golub SET broj_goluba=NEW.majka WHERE broj_goluba=OLD.majka
UPDATE unos_golub SET majka=NEW.majka WHERE majka=OLD.majka)
END

FROM unos_golub;

最佳答案

SQLite没有通用的机制来有条件地执行命令。
但是,在触发器中,可以在整个触发器上使用WHEN条件:

CREATE TRIGGER test_for_broj_goluba
AFTER UPDATE OF majka ON unos_golub
BEGIN
    UPDATE unos_golub SET broj_goluba=NEW.majka WHERE broj_goluba=OLD.majka;
END;

CREATE TRIGGER test_for_majka
AFTER UPDATE OF majka ON unos_golub
WHEN NEW.majka <> ''
BEGIN
    UPDATE unos_golub SET majka=NEW.majka WHERE majka=OLD.majka;
END;


(第一个UPDATE在两种情况下都是相同的,因此不需要WHEN。)

关于sqlite - SQLite CASE/WHEN语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13654982/

10-12 06:08