Primärschlüssel automatisch inkremetieren

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? ;-)

Eine Antwort zu “Primärschlüssel automatisch inkremetieren”

  1. maxfrei sagt:

    Und was machst Du, wenn Du Deine ID’s einschränken möchtest. Z.B. 500 – 10000? Das hat bei Oracle schon seinen Sinn.

Hinterlasse eine Antwort