Izgleda da to ne postoji u Firebirdu-barem ja ne znam za to tako da se i ja dovijam sa dve procedure i jednim generatorom za to i svuda ga posle koristim.
Code:
CREATE GENERATOR BROJAC;
SET GENERATOR BROJAC TO 0;
kada ovo napravim onda ide procedura koja koristi taj generator tj uzima redne brojeve
Code:
SET TERM ^ ;
CREATE OR ALTER PROCEDURE REDOSLED1
returns (
rb integer)
as
begin
rb=GEN_ID (BROJAC,1);
suspend;
end^
SET TERM ; ^
GRANT EXECUTE ON PROCEDURE REDOSLED1 TO SYSDBA;
posle toga ide jos jedna procedura koja nulira generator da bi brojevi krenuli od 1 ponovo.
Code:
SET TERM ^ ;
CREATE OR ALTER PROCEDURE REDOSLED
as
declare variable br integer;
begin
br=0;
br = GEN_ID (BROJAC, br - GEN_ID (BROJAC,0) );
END^
SET TERM ; ^
GRANT EXECUTE ON PROCEDURE REDOSLED TO SYSDBA;
i to je to
tako da bi kod koji tebi treba bio
Code:
select
ime,
ime_roditelj,
prezime,
(select rb from redosled1 ) as rb
from
radnici
where
ime_roditelj is not null
order by ime
Posle toga bi isla procedura REDOSLED da vrati brojace na nulu. Nije previse srecna varijanta....