2016-03-15 48 views
1

我刚开始学习和阅读关于Derby中的TRIGGER,我将其用作Java中的项目的数据库。过去我曾经把MSSQL作为数据库。在Derby更新期间指定ID TRIGGER

我只有一个问题与触发器。我找不到语法,我不知道如何指定在UPDATE触发器中更新哪一行的ID。

这就是我所拥有的。

CREATE TRIGGER COPY_UPDATED_USERNAME 
AFTER UPDATE ON ALLUSERS 
REFERENCING NEW AS NEWUSERNAME_ROW 
FOR EACH ROW MODE DB2SQL 
    UPDATE ALLUSERS_MAINTABSPERMISSION SET USERNAME = NEWUSERNAME_ROW.USERNAME 

它能够更新USERNAME列,但它影响/更新的所有行,而不只是一个一行。那是我遇到问题的地方。

在MSSQL中,我可以简单地把SET @ID = (SELECT ID FROM INSERTED),但我不知道如何在德比做到这一点。

如何在Derby上做到这一点?

谢谢。

回答

1

我能解决我的问题。只需要添加WHERE子句并放置I​​d。

我希望这可以帮助新的德比用户。

CREATE TRIGGER COPY_UPDATED_USERNAME 
AFTER UPDATE OF USERNAME ON ALLUSERS 
REFERENCING NEW AS NEWUSERNAME_ROW 
FOR EACH ROW MODE DB2SQL 
    UPDATE ALLUSERS_MAINTABSPERMISSION SET USERNAME = NEWUSERNAME_ROW.USERNAME 
    WHERE USERID = NEWUSERNAME_ROW.USERID;