You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by Mamatha Kodigehalli Venkatesh <Ma...@ness.com> on 2010/08/05 13:52:43 UTC
derby trigger --- after insert
Hello ,
Here are my 2 tables tidlrblt and tidlggls.
I want to insert an record into tidlggls table as soon as an record is inserted into tidlrblt table using a trigger.
But currently the trigger gls_blt_trg is able to insert into tidlggls table only when an existing record is updated in tidlrblt table.
CREATE TABLE tidlrblt
(
blt_number INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1),
blt VARCHAR(4000) NOT NULL,
size INTEGER NOT NULL,
min_max_size INTEGER NOT NULL,
CONSTRAINT blt_pk PRIMARY KEY (blt_number)
);
CREATE TABLE tidlggls
(
blt_number INTEGER DEFAULT 0 NOT NULL,
min_max_size INTEGER DEFAULT 0 NOT NULL,
create_date CHAR (8) NOT NULL,
glossary_status CHAR (2) NOT NULL,
application_ver CHAR (8) NOT NULL,
time_stamp CHAR (26) NOT NULL
);
CREATE TRIGGER gls_blt_trg
AFTER UPDATE ON tidlrblt
REFERENCING OLD AS UPDATEDROW
FOR EACH ROW
INSERT INTO tidlggls1(blt_number,create_date, glossary_status,
time_stamp,min_max_size,application_ver )
VALUES (UPDATEDROW.blt_number, CURRENT_DATE, '00' , CURRENT_TIMESTAMP, UPDATEDROW.min_max_size,'7.0.1');
Thanks
Mamatha
Re: derby trigger --- after insert
Posted by Rick Hillegas <ri...@oracle.com>.
Hi Mamatha,
I believe that you also need an INSERT trigger in addition to the UPDATE
trigger. The following should work. I had to make a couple changes to
your script:
o The triggers should insert into tidlggls, not tidlggls1
o I changed the type of tidlggls.create_date to DATE and the type of
tidlggls.time_stamp to TIMESTAMP.
Hope this helps,
Rick
connect 'jdbc:derby:memory:db;create=true';
CREATE TABLE tidlrblt
(
blt_number INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START
WITH 1, INCREMENT BY 1),
blt VARCHAR(4000) NOT NULL,
size INTEGER NOT NULL,
min_max_size INTEGER NOT NULL,
CONSTRAINT blt_pk PRIMARY KEY (blt_number)
);
CREATE TABLE tidlggls
(
blt_number INTEGER DEFAULT 0 NOT NULL,
min_max_size INTEGER DEFAULT 0 NOT NULL,
create_date date,
glossary_status CHAR (2) NOT NULL,
application_ver CHAR (8) NOT NULL,
time_stamp timestamp
);
CREATE TRIGGER gls_blt_trg
AFTER UPDATE ON tidlrblt
REFERENCING OLD AS UPDATEDROW
FOR EACH ROW
INSERT INTO tidlggls(blt_number,create_date, glossary_status,
time_stamp,min_max_size,application_ver )
VALUES (UPDATEDROW.blt_number, CURRENT_DATE, '00' , CURRENT_TIMESTAMP,
UPDATEDROW.min_max_size,'7.0.1');
CREATE TRIGGER gls_blt_trg_inst
AFTER INSERT ON tidlrblt
REFERENCING NEW AS INSERTEDROW
FOR EACH ROW
INSERT INTO tidlggls(blt_number,create_date, glossary_status,
time_stamp,min_max_size,application_ver )
VALUES (INSERTEDROW.blt_number, CURRENT_DATE, '00' , CURRENT_TIMESTAMP,
INSERTEDROW.min_max_size,'7.0.1');
insert into tidlrblt( blt, size, min_max_size ) values ( 'foo', 3, 3 );
select * from tidlggls;
Mamatha Kodigehalli Venkatesh wrote:
>
> Hello ,
>
>
>
> Here are my 2 tables tidlrblt and tidlggls.
>
>
>
> I want to insert an record into tidlggls table as soon as an record is
> inserted into tidlrblt table using a trigger.
>
>
>
> But currently the trigger gls_blt_trg is able to insert into tidlggls
> table only when an existing record is updated in tidlrblt table.
>
>
>
> CREATE TABLE tidlrblt
>
> (
>
> blt_number INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START
> WITH 1, INCREMENT BY 1),
>
> blt VARCHAR(4000) NOT NULL,
>
> size INTEGER NOT NULL,
>
> min_max_size INTEGER NOT NULL,
>
> CONSTRAINT blt_pk PRIMARY KEY (blt_number)
>
> );
>
>
>
>
>
>
>
> CREATE TABLE tidlggls
>
> (
>
> blt_number INTEGER DEFAULT 0 NOT NULL,
>
> min_max_size INTEGER DEFAULT 0 NOT NULL,
>
> create_date CHAR (8) NOT NULL,
>
> glossary_status CHAR (2) NOT NULL,
>
> application_ver CHAR (8) NOT NULL,
>
> time_stamp CHAR (26) NOT NULL
>
> );
>
>
>
>
>
> CREATE TRIGGER gls_blt_trg
>
> AFTER UPDATE ON tidlrblt
>
> REFERENCING OLD AS UPDATEDROW
>
> FOR EACH ROW
>
> INSERT INTO tidlggls1(blt_number,create_date, glossary_status,
>
> time_stamp,min_max_size,application_ver )
>
> VALUES (UPDATEDROW.blt_number, CURRENT_DATE, '00' , CURRENT_TIMESTAMP,
> UPDATEDROW.min_max_size,'7.0.1');
>
>
>
> Thanks
>
> Mamatha
>
>
>