Avatar billede gala Nybegynder
05. november 2003 - 11:18 Der er 9 kommentarer og
1 løsning

sequence spørgsmål

Hej!
Er der nogen der kan fortælle mig hvordan man laver en sequence på en tabel. Denne sequence skal fungere som primary key. Gør man det udenfor sin create table sætning? Det gør man vel?

Tak på forhånd!
Gala
Avatar billede tag Nybegynder
05. november 2003 - 11:26 #1
Hej Gala

Følgende et eksempel:

CREATE SEQUENCE TEST.EKS_SEQ
START WITH 1
INCREMENT BY 1
MINVALUE 1
CACHE 20
NOCYCLE
NOORDER

Og ja, det håndteres uden om Create Table.
Avatar billede pgroen Nybegynder
05. november 2003 - 11:27 #2
nemlig !

Du laver først en sequence:

CREATE SEQUENCE seq_blabla;

og anvender den fx. i en insert:

INSERT INTO blabla (id,name) VALUES (seq_blabla.nextval,'Mortensen');


(for nu at gøre en lang histore kort...)
Avatar billede umfugo Nybegynder
05. november 2003 - 11:30 #3
Du kan lave en "Before-insert-trigger" på table, der giver automatisk giver dig en entydig nøgle.

create or replace trigger "Triggername"
    before insert on "tablename"
    for each row
DECLARE
  NexVal number;
BEGIN
            SELECT     "sekvens_name".nextval
            into nexval
            FROM DUAL;

            :NEW.id := nexval;
END;
/
show errors trigger "Triggername"
Avatar billede tag Nybegynder
05. november 2003 - 11:32 #4
...eller som tabel-trigger

CREATE OR REPLACE TRIGGER SEQUENCE_EKS
BEFORE INSERT
ON MYTABLE
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
tmpVar NUMBER;

BEGIN

  SELECT T_ANCMNTID_Seq.NEXTVAL INTO tmpVar FROM dual;
  :NEW.AncmntID := tmpVar;
END;
Avatar billede gala Nybegynder
05. november 2003 - 11:34 #5
tag>> den siger utilstrækkelige privilegier (og så på dansk*G*)
Avatar billede gala Nybegynder
05. november 2003 - 11:36 #6
tror at jeg skal holde mig væk fra triggers førend at jeg kan styre dem....:)
Avatar billede tag Nybegynder
05. november 2003 - 11:42 #7
Hej Gala

Det tyder jo på at den bruger som du logger på med ikke har rettigheder til at
oprette objekter så som tabeltriggers m.m.

Du skal connect'e med en bruger der har DBA-rettigheder. Denne bruger kan så tildele de nødvendige privilegier til den bruger som benytte til at udvikle med.

/tag
Avatar billede gala Nybegynder
05. november 2003 - 11:49 #8
Hm...lyder trist...især fordi jeg ikke forsøger at oprette triggers...:(
Men så må jeg undvære
Tak for hjælpen! lÆG LIGE ET SVAR TAG!
Avatar billede teepee Nybegynder
05. november 2003 - 12:43 #9
Når man skriver CREATE SEQUENCE TEST.EKS_SEQ
opretter du en sequence under test brugeren. Den har du måske ikke adgang til, og for den sags skyld er det ikke sikkert at den skal ligger dér.

CREATE SEQUENCE EKS_SEQ opretter den under den bruger som du er logget ind som.
Avatar billede pgroen Nybegynder
26. november 2003 - 14:52 #10
Et stk. svar herfra :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester