You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Mamatha Kodigehalli Venkatesh <Ma...@ness.com> on 2010/06/23 15:35:45 UTC

Thanks for the help: Create Trigger

Thanks Rick... It is working.
I may need more help on creating complex triggers.
To begin with this was helpful.


-----Original Message-----
From: Rick Hillegas [mailto:rick.hillegas@oracle.com] 
Sent: Wednesday, June 23, 2010 6:19 PM
To: Derby Discussion
Subject: Re: Create Trigger .. Please help

Hi Mamatha,

I'm not sure that I understand what the trigger is supposed to do, but 
here is a sample script which may do something close. Along the way I 
rephrased myTable.size as a generated column because your example 
suggested it was being used that way:

create table myTable
(
   myTableID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 
1, INCREMENT BY 1),
   Name     VARCHAR (50) NOT NULL,
   size INTEGER NOT NULL generated always as ( length( name ) )
);
create table targetTable
(
  targetTableID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START 
WITH 1, INCREMENT BY 1),
  myTableID INTEGER,
  size INTEGER
);
create trigger copySize
  after insert on myTable
  referencing new as newRow
  for each row
    insert into targetTable( myTableID, size ) values ( 
newRow.myTableID, newRow.size )
;

insert into myTable (name) values ('Jon231232');
insert into myTable (name) values ('Mamatha');
insert into myTable (name) values ('Star');

select * from myTable;
select * from targetTable;

Hope this helps,
-Rick

Mamatha Kodigehalli Venkatesh wrote:
>
> Hello,
>
>  
>
> Derby version = db-derby-10.5.1.1
>
>  
>
> I need to pick up the value of myTable.size as soon as the record is 
> inserted and need to update the targetable.size column
>
> Where myTable .myTableID = targetable.MyTableID using a *Trigger*.
>
>  
>
> Please help me out on this.
>
>  
>
> CREATE TABLE myTable (
>
> myTableID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, 
> INCREMENT BY 1),
>
> Name     VARCHAR (50),
>
> size INTEGER NOT NULL);
>
>  
>
> INSERT INTO myTable (name,size) VALUES ('Jon231232', 9);
>
> INSERT INTO myTable (name,size) VALUES ('Mamatha', 7);
>
> INSERT INTO myTable (name,size) VALUES ('Star', 4);
>
>  
>
>  
>
> CREATE TABLE targetTable (
>
> targetTableID INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START 
> WITH 1, INCREMENT BY 1),
>
> myTableID INTEGER NULL,
>
> size INTEGER);
>
>  
>
> Thanks
>
> Mamatha
>