google analytics

meta

adsense

Friday, March 27, 2015

Using a sequence to default a value in a table column without using triggers

Often times, a default/unique value might be needed to be inserted into a column of a table which can then act as a primary or unique identifier.

The usual methodology will be to do that using a row level trigger which fires on INSERT and updates the column value with the sequence value.

SQL> create trigger tab1
  2  before insert on tab1
  3  for each row
  4  begin
  5    if (:new.x is null)
  6    then
  7       :new.x := s.nextval;
  8    end if;
  9  end;
 10  /
Trigger created. 

This can be replaced by the below method from Oracle Database 12c.

SQL> create sequence s;
Sequence created.
SQL> create table tab1
  2  ( x int
  3      default s.nextval
  4          primary key,
  5    y varchar2(30)
  6  );
Table created.

SQL> insert into tab1 (x,y)
  2  values ( default, 'hello' );
1 row created.

SQL> insert into tab1 (y)
  2  values ( 'world' );
1 row created.

SQL> select * from tab1;

         X  Y
  ————————  ————————
         1  hello
         2  world 

No comments:

Post a Comment

LinkWithin

Related Posts Plugin for WordPress, Blogger...