[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