[ 
https://issues.apache.org/jira/browse/DERBY-6383?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13810588#comment-13810588
 ] 

ASF subversion and git services commented on DERBY-6383:
--------------------------------------------------------

Commit 1537593 from [~mamtas] in branch 'code/trunk'
[ https://svn.apache.org/r1537593 ]

DERBY-6383(Update trigger defined on one column fires on update of other 
columns). 

This regression is caused by DERBY-4874(Trigger does not recognize new size of 
VARCHAR column expanded with ALTER TABLE. It fails with ERROR 22001: A 
truncation error was
encountered trying to shrink VARCHAR)

The regression is for Statement level triggers. The statement trigger gets 
fired incorrectly for any column update rather than just the column specified 
in the UPDATE of column clause. The fix is going to ensure that SYSTRIGGERS has 
the correct list of columns on which trigger should be fired. Row level 
triggers work fine. The only workaround at this point is to drop and recreate 
the statement triggers.

> Update trigger defined on one column fires on update of other columns
> ---------------------------------------------------------------------
>
>                 Key: DERBY-6383
>                 URL: https://issues.apache.org/jira/browse/DERBY-6383
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.7.1.4, 10.8.1.2, 10.9.1.0, 10.10.1.1
>            Reporter: Knut Anders Hatlen
>            Assignee: Mamta A. Satoor
>         Attachments: DERBY6383_patch1_diff.txt, DERBY6383_patch2_diff.txt, 
> d6383.sql, derby_for_Embedded_40Changes10_7testTriggers.log, 
> derby_for_Embedded_40Changes10_9testDisposableStatisticsExplicit.log, 
> error-stacktrace_for_Embedded_40Changes10_7testTriggers.out, 
> error-stacktrace_for_Embedded_40Changes10_9testDisposableStatisticsExplicit.out,
>  runall.out
>
>
> I see this problem on 10.8 and higher. To reproduce, create a database with a 
> trigger like this:
> connect 'jdbc:derby:trigdb;create=true';
> create table t1(x int, y int);
> create table t2(x int, y int);
> create trigger tr after update of x on t1 referencing old table as old insert 
> into t2 select * from old;
> Then run dblook on the database, and you'll see the following output:
> -- ----------------------------------------------
> -- DDL Statements for triggers
> -- ----------------------------------------------
> CREATE TRIGGER "APP"."TR" AFTER UPDATE OF "X", "Y" ON "APP"."T1" REFERENCING 
> OLD_TABLE AS OLD FOR EACH STATEMENT insert into t2 select * from old;
> Notice that the DDL creates an update trigger for columns X and Y, whereas 
> the original trigger was defined on column X only.
> I see the expected DDL on 10.7.1.1.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to