Posted By: vejpuste (Libor Vejpustek) on 'CZdatabases'
Title:     Re: Snim ci bdim? - Oracle8 a sequence jako default value
Date:      Thu Feb  3 12:19:08 2000

> Hi all!
> 
> Nevim, jestli neumim cist anglicky nebo se mi to je zda, ale v dokumentaci
> na
> "Where to Use Sequence Values" pisou:
> - you cannot use CURRVAL and NEXTVAL in these places:
> ...
> . DEFAULT value of a column in a CREATE TABLE or ALTER TABLE statement
> ...
> 
> Dela si ze mne manual srandu a nebo je opravdu mozne, ze nejnovejsi Oracle 
> nezvlada takovouhle zakladni, trivialni a IMHO dulezitou vec?

     No tak dobre. Tak uz to konecne napisu presne. V default value to 
nepripousti. Da se to obejit pomoci triggeru. Vyrob trigger s volbama BEFORE 
INSERT nad prislusnou tabulkou a do BODY dej :
BEGIN
  SELECT SEKVENCE.NEXTVAL INTO :NEW.ID FROM DUAL;
END; 
ID je polozka ve ktere mas ID zaznamu. Snad je to jasnejsi.

Presna syntaxe je :
CREATE OR REPLACE TRIGGER "SCHEMA".NAZEV BEFORE INSERT ON "SCHEMA"."TABULKA" 
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
BEGIN
  SELECT SEKVENCE.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
;
 

                                        Libor Vejpustek
                                        Ceska zemedelska univerzita Praha
http://web.czu.cz/~vejpuste/            E-mail : vejpuste@uvt.czu.cz

Search the boards