Java 在Derby中使用条件创建触发器

Java 在Derby中使用条件创建触发器,java,sql,sql-server,database,derby,Java,Sql,Sql Server,Database,Derby,我必须为ApacheDerby编写一个sql更新触发器语句。我通常使用Sql Server和T-Sql。但现在我必须使用德比。不幸的是,我对Derby很陌生,在Derby手册中找不到合适的解决方案 我的问题是,我必须检查更新触发器中的条件,并根据该条件的结果执行更新或插入,因此在T-SQL中,我将使用IF-ELSE条件。有人能告诉我德比或者其他方式中的等价物是什么吗?我已经考虑过WHEN条款,但这似乎是错误的方向 到目前为止,我有以下代码: CREATE TRIGGER UPDATE_EVENT

我必须为ApacheDerby编写一个sql更新触发器语句。我通常使用Sql Server和T-Sql。但现在我必须使用德比。不幸的是,我对Derby很陌生,在Derby手册中找不到合适的解决方案

我的问题是,我必须检查更新触发器中的条件,并根据该条件的结果执行更新或插入,因此在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
            );
这句话只是一个小例子,告诉你我的问题。我希望你能帮助我

致以最良好的祝愿


Yalcin

不要随意标记。您的问题与sql server无关

但似乎你的目标并不是直接可以实现的——正如已经讨论过的那样,你在寻找吗。Derby不支持多语句触发器。似乎您需要使用多个触发器