BlogKontaktTagcloud

Autoincrement in Posgresql

Am Freitag haben Dani und ich den Endspurt für die Datenbankprüfungen angesetzt. Auch wenn das ganze mit der trivalen Feststellung gestartet hat das auch seine Firma nicht schneller als Lichtgeschwindigkeit transportieren kann (wer um 14 Uhr in Bern abfährt ist selten um 14 Uhr des selben Tages in Rapperswil ;-)

Ich bereite nun auf Morgen den View, Trigger, Rules und Funktionen Teil vor während er sich nochmals mit jdbc rumschlägt. Am Freitag haben wird dann noch rausgefunden das ein Autoincrement selbst zu implementieren nicht so einfach ist. Nach dem ich mich jetzt erst mal noch mit der Theorie rumgeschlagen habe, habe ich dann das Versucht selbst zu implementieren. Wie man das richtig macht (also ohne Gebastel) steht hier.

Und so hab ich's gemacht. Zuerst macht man eine Tabelle, zb. so:
CREATE TABLE autoincrementtest
(
id int8 NOT NULL DEFAULT autoincrement(),
test varchar
)
Danach die Funktion in pgsql:
CREATE OR REPLACE FUNCTION autoincrement()
RETURNS int8 AS
$BODY$DECLARE
maxID int8;
BEGIN
SELECT MAX(id)
INTO maxID
FROM autoincrementtest;

IF maxID IS NOT NULL THEN
return maxID+1;
ELSE
return 1;
END IF;
END;$BODY$
LANGUAGE 'plpgsql' VOLATILE;
Einfügen und abfragen geht dann wie gewohnt:
INSERT INTO autoincrementtest(test)
VALUES('test3');

SELECT * FROM autoincrementtest;

Ähnliche Beiträge:
Generics Gala
get2post oder Prof's belehren
Mobile App Hackathon
Make it human (or how to crack a CAPTCHA)
Named parameters in Java (bgl-style)
Comments (2)  Permalink

comments

Emanuel @ 12.09.2005 13:51 CEST
Hier stehts auch: http://www.postgresql.org/docs/8.0/static/datatype.html#DATATYPE-SERIAL
leo @ 12.09.2005 13:54 CEST
Ja ja, Handbuch müsste man lesen können.

Das mit Triggers und Co. stimmt auf den Folien im überigen gar nicht. Einen Blick ins Wiki lohnt sich.

add a comment

The Trackback URL to this comment is:
http://leo.freeflux.net/blog/plugin=trackback(173).xml

Keine (weiteren) neuen Kommentare erlaubt.