2016-03-15 47 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;