[linux-l] SQL / PostgreSQL

Pascal Volk linux-l at edelhost.de
Di Sep 19 21:36:36 CEST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

* Am Di, 19 Sep 2006 schrub Olaf Radicke:
> Hi!
> 
> Ich habe ein Problem...
> Wenn ich eine Datensatz in eine Tabelle einfüge, dessen einziger eindeutiger 
> Schüssel ein SERIAL PRIMARY KEY ist, wie bekomme ich raus, unter welcher ID 
> der Datensatz gespeichert wurde? Nachträglich danach suchen geht nicht, weil 
> alle anderen Spalten mehrfach vorkommen können und nicht eindeutig sind. Also 
> brauche ich gleich beim INSERT die SERIAL PRIMARY KEY zurück. Wie bekommt man 
> das hin??

Hi Olaf,

PostgreSQL hat OIDS, wenn man will. Langes Bsp.:

pvo at el-presidente $ psql template1 
Dies ist psql 8.1.4, das interaktive PostgreSQL-Terminal.
[...]
                \q um zu beenden

template1=# CREATE DATABASE foobar WITH ENCODING='UNICODE';
CREATE DATABASE
template1=# \c foobar 
Sie sind jetzt mit der Datenbank »foobar« verbunden.
foobar=# CREATE TABLE foos (
foobar(# id serial NOT NULL,
foobar(# baz varchar(50) NOT NULL) WITH OIDS;
NOTICE:  CREATE TABLE will create implicit sequence "foos_id_seq" for serial
column "foos.id"
CREATE TABLE
foobar=# INSERT INTO foos (baz) VALUES ('Lecker Kaffe');
INSERT 23719 1
foobar=# INSERT INTO foos (baz) VALUES ('Lecker Kaffe');
INSERT 23720 1
foobar=# INSERT INTO foos (baz) VALUES ('Lecker Kaffe');
INSERT 23721 1
foobar=# SELECT * FROM foos WHERE oid = 23720;
 id |     baz      
- ----+--------------
  2 | Lecker Kaffe
(1 Zeile)

foobar=# INSERT INTO foos (baz) VALUES ('mehr lecker Kaffe');
INSERT 23722 1
foobar=# INSERT INTO foos (baz) VALUES ('viel lecker Kaffe');
INSERT 23723 1
foobar=# SELECT currval('foos_id_seq');
 currval 
- ---------
       5
(1 Zeile)

foobar=# SELECT last_value FROM foos_id_seq;
 last_value 
- ------------
          5
(1 Zeile)

foobar=# \q


Sonst, wie Benjamin schrieb, timestapms existieren, wenn der Timestamp nicht
reicht, gibt es noch den current_user. Wenn das alles noch nicht reicht,
gibt es mehr oder weniger taugliche Suchmaschinen.


Gruß
Pascal
- -- 
rm -Rfv /tmp/../ && echo "are you sure???"

Die BeLUG im IRC:
irc://irc.freenode.net/#belug
 ____ ____ ____ ____ ____ _________ ____ ____ ____ ____ ____ ____ 
 ||/ |||j |||o |||i |||n |||       |||# |||b |||e |||l |||u |||g ||
 ||__|||__|||__|||__|||__|||_______|||__|||__|||__|||__|||__|||__||
 |/__\|/__\|/__\|/__\|/__\|/_______\|/__\|/__\|/__\|/__\|/__\|/__\|

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFFEEbENx2k6gsBqqkRAoaeAJsG/3wJdiSdkkblrbEzCqUZK90aCQCfc1ex
Cj/6xFv+ne1Ci+wK/voDyuI=
=nHo5
-----END PGP SIGNATURE-----



Mehr Informationen über die Mailingliste linux-l