> I have this table definition:
> CREATE TABLE CONSUMPTION
> (
>     ID KEYS NOT NULL,
>     QUANTITY Integer DEFAULT 0,
>     UNITPRICE Numeric(18,2) DEFAULT 0,
>     CONSUMEDVALUE Numeric(18,2) DEFAULT 0,
>     REMARKS Varchar(50) COLLATE UNICODE_CI_AI,
>     CONSUMED Timestamp,
>     MATURITYFIRST Integer,
>     MATURITYBEST Integer,
>     MATURITYPAST Integer,
>     TRANSFER_ID Bigint,
>     FK_CBBOTTLEID Bigint,
>     FK_CELLARBOOK_ID KEYS,
>     FK_RATING_ID KEYS,
>     FK_CELLAR_ID KEYS,
>     FK_REASON_ID KEYS,
>     CREATED_AT Timestamp,
>     UPDATED_AT Timestamp,
>     CREATED_BY KEYS,
>     UPDATED_BY KEYS,
>     CONSTRAINT PK_CONSUMPTION PRIMARY KEY (ID)
> )
>
> CREATE TRIGGER CONSUMPTION_CONSVAL FOR CONSUMPTION
> ACTIVE AFTER INSERT OR UPDATE POSITION 0
> AS
> BEGIN
>       /* enter trigger code here */
>       new.CONSUMEDVALUE = new.UNITPRICE * new.QUANTITY;
> END
>
> When I try to update manually (e.g. using FlameRobin or IBExpert) the
> column "CONSUMEDVALUE" or when I try to create the above trigger I get
> this error:
>
> SQL Message : -151
> This column cannot be updated because it is derived from an SQL function
> or expression.
>
> Engine Code    : 335544359
> Engine Message :
> attempted update of read-only column
>
> What am I doing wrong?

You can't set a new column value in an AFTER trigger. Use a BEFORE trigger.


-- 
With regards,
Thomas Steinmaurer
http://www.upscene.com/

Reply via email to