Portál AbcLinuxu, 8. listopadu 2025 16:00
Řešení dotazu:
create database foo; create user john; grant all on database foo to john; \connect foo;
create table pokus (i_pokus serial, v_pokus varchar(80));
create unique index p_pokus_1 on pokus(i_pokus);
create language plpgsql;
create or replace function u_pokus_before_insert() returns trigger as '
begin
if new.i_pokus = 0 then
new.i_pokus = nextval(''pokus_i_pokus_seq'');
end if;
return new;
end
' language 'plpgsql';
create trigger t_pokus_1 before insert on pokus for each row execute procedure u_pokus_before_insert();
insert into pokus values (0, 'alfa');
insert into pokus values (0, 'beta');
insert into pokus values (0, 'gama');
select * from pokus;
i_pokus | v_pokus
---------+---------
1 | alfa
2 | beta
3 | gama
takisto existujú ľudia, čo vygenerovanú hodnotu sekvencie transformujú (napr v jednej Celko-vej knihe je popísaný celkom jednoduchý spôsob), aby "indexy boli lepšími indexami"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.