SQLite CASE/WHEN语句 [英] SQLite CASE/WHEN statement
问题描述
这是我的CASE/WHEN语句.但正如您可能看到的那样,我得到了这个错误.我不知道为什么 我要做的就是检测MAJKA字段中的某些内容何时发生更改.因此,如果MAJKA列中的其他一些字段为空,请不要触摸它们,而是将值更改为MAJKA列中不为空的那些字段的新值.
this is my CASE/WHEN statement. But as you may see I get this error. I don't know why. All I want to do is detect when something in field MAJKA is changed. So if some other fields of column MAJKA are empty don't touch them, but change the value to new value of those fields of column MAJKA which are NOT empty.
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
条件:
SQLite has no general mechanism to execute commands conditionally.
However, in triggers, you can use a WHEN
condition on the entire trigger:
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
.)
(The first UPDATE
is the same in both cases and thus does not need a WHEN
.)
这篇关于SQLite CASE/WHEN语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!