Testtabell för exemplet
KUND
kundid number(5)
kundnamn varchar(25)
Tabellen CG_CODE_CONTROLS skapas enligt följande
CREATE TABLE CG_CODE_CONTROLS (
cc_domain varchar2(30) PRIMARY KEY,
cc_comment varchar2(240),
cc_next_value number(15) NOT NULL,
cc_increment number(15) NOT NULL);
där cc_domain är namnet på räknare, t.ex. "Kundid", cc_comment är en kommentar, cc_next_value är nästa värde för räknaren (första gången = startvärdet) och cc_increment är hur mycket som räknaren skall räknas upp med varje gång.
Därefter kan räknarna läggas in i tabellen t.ex enligt följande
INSERT INTO CG_CODE_CONTROLS VALUES ('Kundid', 'Räknare för kundid. Startvärde 1 och ökas med 1 för varje ny kund', 1,1);
Skapa triggern för räknaren
CREATE OR REPLACE TRIGGER KUND_COUNTER
BEFORE INSERT ON KUND FOR EACH ROW
DECLARE
next_value NUMBER;
increment NUMBER;
BEGIN
SELECT cc_next_value, cc_increment
INTO next_value, increment
FROM CG_CODE_CONTROLS
WHERE cc_domain = 'Kundid';
:new.kundid := next_value;
UPDATE CG_CODE_CONTROLS
SET cc_next_value = next_value + increment
WHERE cc_domain = 'Kundid';
END;
Därefter kan vi lägga till en post i tabellen kund
INSERT INTO KUND VALUES (Null, 'Kalle Anka');
posten kommer nu "automatiskt" att få ett nummer från CG_CODE_CONTROLS.