From: | "A(dot) Kretschmer" <andreas(dot)kretschmer(at)schollglas(dot)com> |
---|---|
To: | pgsql-de-allgemein(at)postgresql(dot)org |
Subject: | Re: Sequenz mit Ausnahmen |
Date: | 2006-03-07 16:05:15 |
Message-ID: | 20060307160515.GA5469@webserv.wug-glas.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
am 07.03.2006, um 16:26:03 +0100 mailte Daniel Seichter folgendes:
> Hallo,
>
> welche Möglichkeiten habe ich, bei einer Sequenz, die von 1 bis
> "unendlich" laufen soll, einen Wertebereich auszunehmen?!
>
> Die Werte 64000 bis 65000 sollen NICHT vergeben werden. Die Sequenz
> zählt quasi eine Seriennummer hoch, die als Nummer auch in der
> Fertigung verwendet wird.
Schnellschuß:
test=# create table foo (id serial check (id not between 5 and 10));
NOTICE: CREATE TABLE will create implicit sequence "foo_id_seq" for serial column "foo.id"
CREATE TABLE
test=#
test=#
test=# insert into foo values (default);
INSERT 0 1
test=# insert into foo values (default);
INSERT 0 1
test=# insert into foo values (default);
INSERT 0 1
test=# insert into foo values (default);
INSERT 0 1
test=# insert into foo values (default);
ERROR: new row for relation "foo" violates check constraint "foo_id_check"
test=# insert into foo values (default);
ERROR: new row for relation "foo" violates check constraint "foo_id_check"
test=# insert into foo values (default);
ERROR: new row for relation "foo" violates check constraint "foo_id_check"
test=# insert into foo values (default);
ERROR: new row for relation "foo" violates check constraint "foo_id_check"
test=# insert into foo values (default);
ERROR: new row for relation "foo" violates check constraint "foo_id_check"
test=# insert into foo values (default);
ERROR: new row for relation "foo" violates check constraint "foo_id_check"
test=# insert into foo values (default);
INSERT 0 1
test=# insert into foo values (default);
INSERT 0 1
test=# select * from foo;
id
----
1
2
3
4
11
12
(6 rows)
Es sollte möglich sein, für den einfachen CHECK-Constraint eine Funktion
zu basteln, die mit currval() prüft, wenn die untere Grenze erreicht
ist, und dann mit setval() den Sprung macht.
>
> Leider noch postgreSQL 7.4.8, aber bis zur Jahresmitte das Update auf
> 8.1 geplant.
Was ist, wenn bis dahin 8.2 da ist? ;-)
Andreas
--
Andreas Kretschmer (Kontakt: siehe Header)
Heynitz: 035242/47215, D1: 0160/7141639
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
=== Schollglas Unternehmensgruppe ===
From | Date | Subject | |
---|---|---|---|
Next Message | A. Kretschmer | 2006-03-07 16:07:53 | Re: Sequenz mit Ausnahmen |
Previous Message | Peter Eisentraut | 2006-03-07 16:01:22 | Re: Sequenz mit Ausnahmen |