这是我的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/