0
我必須爲Apache Derby編寫一個sql更新觸發器語句。我通常使用Sql Server和T-SQL。但現在我必須使用德比。不幸的是,我對德比很陌生,在德比手冊中找不到合適的解決方案。CREATE TRIGGER隨着Derby中的條件
我的問題是,我必須檢查更新觸發器中的條件,並基於此條件的結果,我將執行UPDATE或INSERT,因此在T-SQL中,我將使用IF-ELSE-條件。有人能告訴我什麼是德比或者其他方式嗎?我已經考慮過WHEN條款,但這似乎是錯誤的方向。
我有下面的代碼至今:
CREATE TRIGGER UPDATE_EVENTS
AFTER UPDATE
ON ACCIDENTS
REFERENCING OLD AS oldRow NEW AS newRow
FOR EACH ROW MODE DB2SQL
-- In the following, I would usually use an IF-ELSE Statement,
-- but I can't use this in Derby. So I tried the optional WHEN Statement,
-- but there I could not have an else "path", right?
-- This should be the If-Case
WHEN((SELECT COUNT(*) FROM VIEW_EVENTS WHERE ID_DATE = newRow.ID_DATE) > 0)
UPDATE VIEW_EVENTS
SET DETAILS = newRow.DETAILS,
PARTICIPANTS = newRow.PARTICIPANTS
WHERE ID_DATE = newRow.ID_DATE
-- And this should be the else case
WHEN((SELECT COUNT(*) FROM VIEW_EVENTS WHERE ID_DATE = newRow.ID_DATE) <= 0)
INSERT INTO VIEW_EVENTS
(ID_KEY,
ID_DATE,
DETAILS,
PARTICIPANTS
)
VALUES
(newRow.ID_KEY,
newRow.ID_DATE,
newRow.DETAILS,
newRow.PARTICIPANTS
);
這種說法只是一個小例子來向你展示我的問題。我希望你可以幫助我 :)。
最好的問候,
亞爾欽