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:
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 autoincrementtestDanach die Funktion in pgsql:
(
id int8 NOT NULL DEFAULT autoincrement(),
test varchar
)
CREATE OR REPLACE FUNCTION autoincrement()Einfügen und abfragen geht dann wie gewohnt:
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;
INSERT INTO autoincrementtest(test)
VALUES('test3');
SELECT * FROM autoincrementtest;
comments
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.






Hier stehts auch: http://www.postgresql.org/docs/8.0/static/datatype.html#DATATYPE-SERIAL