Home » SQL & PL/SQL » SQL & PL/SQL » Automatically assign the ID number to next row
Automatically assign the ID number to next row [message #1745] Sun, 26 May 2002 04:47 Go to next message
Max
Messages: 18
Registered: May 2002
Junior Member
This is my table structure

create table passenger
(pnr_no char(7),
pnr_name char(20) NOT NULL,
pnr_street char(20),
pnr_suburb char(20),
pnr_postcode char(4)
CONSTRAINT passenger_pk PRIMARY KEY (pnr_no));
and this is my trigger

create trigger passenger_number
BEFORE INSERT ON PASSENGER
FOR EACH
ROW
BEGIN
SELECT PNR_NO.NEXTVAL
INTO: NEW.PNR_NO
FROM PASSENGER
END passenger_number;
/

I just want to automatically to assign the passenger id, but i can not do that. Can you fix that to me please
Thanks advance.
Re: Automatically assign the ID number to next row [message #1746 is a reply to message #1745] Sun, 26 May 2002 07:31 Go to previous messageGo to next message
billh
Messages: 35
Registered: August 1999
Member
you also need a sequence called 'pnr_no'.
Re: Automatically assign the ID number to next row [message #1748 is a reply to message #1745] Sun, 26 May 2002 09:57 Go to previous message
Mahesh Rajendran
Messages: 10707
Registered: March 2002
Location: oracleDocoVille
Senior Member
Account Moderator
/*
your syntax is wrong.
you cannot select a sequence.next value from a database table. u need to use a dual table.
and u need a sequence PNR_NO.
i have created it for here.
*/

SQL> ed
Wrote file afiedt.buf

1 create table passenger
2 (pnr_no char(7) PRIMARY KEY,
3 pnr_name char(20) NOT NULL,
4 pnr_street char(20),
5 pnr_suburb char(20),
6* pnr_postcode char(4))
7 /

Table created.

SQL> create sequence pnr_no start with 1 increment by 1;

Sequence created.

SQL> ed
Wrote file afiedt.buf

1 create trigger passenger_number
2 BEFORE INSERT ON PASSENGER
3 FOR EACH
4 ROW
5 BEGIN
6 SELECT PNR_NO.NEXTVAL
7 INTO :NEW.PNR_NO
8 FROM dual;
9* END passenger_number;
SQL> /

Trigger created.

SQL> insert into passenger values (null,'nag','ss','ss','ss');

1 row created.

SQL> select * from passenger;

PNR_NO PNR_NAME PNR_STREET PNR_SUBURB PNR_
------- -------------------- -------------------- -------------------- ----
1 nag ss ss ss

SQL> insert into passenger values (null,'nag','ss','ss','ss');

1 row created.

SQL> /

1 row created.

SQL> select * from passenger;

PNR_NO PNR_NAME PNR_STREET PNR_SUBURB PNR_
------- -------------------- -------------------- -------------------- ----
1 nag ss ss ss
2 nag ss ss ss
3 nag ss ss ss

SQL> insert into passenger values (7,'nag','ss','ss','ss');

1 row created.

SQL> select * from passenger;

PNR_NO PNR_NAME PNR_STREET PNR_SUBURB PNR_
------- -------------------- -------------------- -------------------- ----
1 nag ss ss ss
2 nag ss ss ss
3 nag ss ss ss
4 nag ss ss ss

SQL>
Previous Topic: How to get Out parameter from Oracle stored proc with a package by ADO (Visual basic )
Next Topic: Commit N-rows in PL/SQL
Goto Forum:
  


Current Time: Thu Apr 18 17:29:05 CDT 2024