PolarDB-for-PostgreSQL
35 строк · 798.0 Байт
1DROP SEQUENCE next_id;
2DROP TABLE ids;
3
4CREATE SEQUENCE next_id START -2 MINVALUE -2;
5
6CREATE TABLE ids (
7id int4,
8idesc text
9);
10
11CREATE TRIGGER ids_nextid
12BEFORE INSERT OR UPDATE ON ids
13FOR EACH ROW
14EXECUTE PROCEDURE autoinc (id, next_id);
15
16INSERT INTO ids VALUES (0, 'first (-2 ?)');
17INSERT INTO ids VALUES (null, 'second (-1 ?)');
18INSERT INTO ids(idesc) VALUES ('third (1 ?!)');
19
20SELECT * FROM ids;
21
22UPDATE ids SET id = null, idesc = 'first: -2 --> 2'
23WHERE idesc = 'first (-2 ?)';
24UPDATE ids SET id = 0, idesc = 'second: -1 --> 3'
25WHERE id = -1;
26UPDATE ids SET id = 4, idesc = 'third: 1 --> 4'
27WHERE id = 1;
28
29SELECT * FROM ids;
30
31SELECT 'Wasn''t it 4 ?' as nextval, nextval ('next_id') as value;
32
33insert into ids (idesc) select textcat (idesc, '. Copy.') from ids;
34
35SELECT * FROM ids;
36