Primärschlüssel automatisch inkremetieren

2010-08-29

Unter Oracle Datenbanken sind für eine Tabelle mit automatisch inkrementiertem Primärschlüssel die Tabelle selbst, eine Sequenz und ein Trigger anzulegen:

create table foo (
       my_key number,
       bar nchar(255),
       primary key (my_key));

create sequence foo_seq 
       start with 1 
       increment by 1 
       nomaxvalue; 

create trigger foo_trigger
       before insert on foo
       for each row
       begin
         select foo_seq.nextval into :new.my_key from dual;
       end;
/

Bei einer MySQL Datenbank reicht hierzu das Schlüsselwort auto_increment in der Tabellen-Definition aus:

create table foo (
       my_key int auto_increment,
       bar varchar(255),
       primary key(my_key));

Welches der beiden Beispiele lässt sich schneller schreiben bzw. lesen? ;-)