On 8/25/13 2:40 AM, tim.wickett wrote:
Hi again, I am having more trigger problems. This time I am trying to create
a history when values are updated. This is my code

CREATE TRIGGER update_location
     AFTER UPDATE ON WASTE_ITEM
     REFERENCING OLD AS old_waste_item
     FOR EACH ROW
     WHERE (old_waste_item.current_location
            <>  current_location)
     INSERT INTO WASTE_ITEM_LOCATION_HISTORY
     VALUES (old_waste_item.waste_item_id, CURRENT DATE,
             old_waste_item.current_site_id, old_waste_item.current_location)

I get the following syntax error

Error code -1, SQL state 42X01: Syntax error: Encountered "WHERE" at line 4,
column 18.

but as far as I can see the syntax is correct so please help. Hopefully I am
missing something obvious.

Thanks Tim



--
View this message in context: 
http://apache-database.10148.n7.nabble.com/More-trigger-problems-tp133437.html
Sent from the Apache Derby Users mailing list archive at Nabble.com.

Hi Tim,

What you need is the WHEN clause of the CREATE TRIGGER statement. Derby does not support this clause yet, but it is tracked by the following issue: https://issues.apache.org/jira/browse/DERBY-534 You can help raise the priority of that issue by voting for it.

As a workaround, you could re-code your trigger to fire a database procedure. The procedure would be responsible for comparing the old and new values of current_location in order to determine whether a row should be inserted into waste_item_location_history. Something like the following:

CREATE TRIGGER update_location
    AFTER UPDATE ON WASTE_ITEM
    REFERENCING
        OLD AS owi
        NEW AS nwi
    FOR EACH ROW
CALL updateWasteHistory( owi.wasteItemID, owi.siteID, owi.currentLocation, nwi.currentLocation )

Hope this helps,
-Rick

Reply via email to