File: autoinc.example

package info (click to toggle)
postgresql 6.3.2-8
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 19,388 kB
  • ctags: 15,077
  • sloc: ansic: 158,988; sh: 5,379; java: 5,143; yacc: 4,891; tcl: 4,170; sql: 4,120; makefile: 2,615; lex: 906; cpp: 839; python: 836; perl: 678; asm: 70; csh: 5; sed: 2
file content (35 lines) | stat: -rw-r--r-- 803 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
DROP SEQUENCE next_id;
DROP TABLE ids;

CREATE SEQUENCE next_id START -2 MINVALUE -2;

CREATE TABLE ids (
	id		int4,
	idesc		text
);

CREATE TRIGGER ids_nextid 
	BEFORE INSERT OR UPDATE ON ids
	FOR EACH ROW 
	EXECUTE PROCEDURE autoinc (id, next_id);

INSERT INTO ids VALUES (0, 'first (-2 ?)');
INSERT INTO ids VALUES (null, 'second (-1 ?)');
INSERT INTO ids(idesc) VALUES ('third (1 ?!)');

SELECT * FROM ids;

UPDATE ids SET id = null, idesc = 'first: -2 --> 2' 
	WHERE idesc = 'first (-2 ?)';
UPDATE ids SET id = 0, idesc = 'second: -1 --> 3' 
	WHERE id = -1;
UPDATE ids SET id = 4, idesc = 'third: 1 --> 4' 
	WHERE id = 1;

SELECT * FROM ids;

SELECT 'Wasn''t it 4 ?' as nextval, nextval ('next_id') as value;

insert into ids (idesc) select textcat (idesc, '. Copy.') from ids;

SELECT * FROM ids;