Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: Oracle Primary key and Delphi: How to insert the primary key value automatically ?

Re: Oracle Primary key and Delphi: How to insert the primary key value automatically ?

From: Dmitry Ivanoff <moprok_at_ropnet.ru>
Date: 1997/09/22
Message-ID: <01bcc747$b3ea1840$5fd6bec2@dymok-pc>#1/1

> Questions:

>=20
> 1. Is it possible to use Oracle Database triggers to automatically =
 fill in
> the next sequence number in the primary key field ?=20
> If so how can this be achieved ?

You can do the following:
Type in command in any SQL Processor (SQL*Plus, ...)

Create Trigger <TriggerName>
before Insert On <TableName>=20
For Each Row
when (:NEW.<PrimKeyColumn> is NULL )
begin

   select <SEQ>.nextval=20
   into :NEW.<PrimKeyColumn>
   from DUAL;
end;
/
=20
> 2. If this is not possible I would like to know the following : When I =
 have
> a table open in a grid open in Delphi and I am in the edit =20
> mode. When I insert a record can I then get the next sequence number =
 from
> Oracle and fill it myself in the table ? How do I do that.

You can do the following :
In AfterInsert Event Handler of TQuery=20 asc Oracle about next sequence number ( just use another Query ) and = assign it to=20
<Query>.FieldByName(<PrimKeyColumn>).AsInteger

If you want your record set to have no "holes" in sequence numbers,=20 use first method.=20
But you must requery the source to get generated numbers ( it may be = important
if you use Master-Detail relationship ). In this case second method = should be
preferred.

Sorry for possible mistakes.

Best regards.
Dmitry.
moprok_at_ropnet.ru Received on Mon Sep 22 1997 - 00:00:00 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US