Avatar billede lablo Nybegynder
17. november 2004 - 13:54 Der er 3 kommentarer og
1 løsning

Trigger i Interbase / Firebird

Oprettelse af Trigger i Firebird  200 point fra lablo 



X Hey deude

jeg sidder med lidt af et problem.
jeg skal have lavet en trigger der auto generere en primary key.
og jeg har et SQL script der ser sådan ud:

    /* Domain for Kunde  */
CREATE DOMAIN dom_KundeId AS INTEGER;
CREATE DOMAIN dom_Navn AS VARCHAR(30);
CREATE DOMAIN dom_Adresse AS VARCHAR(45);
CREATE DOMAIN dom_Postnummer AS VARCHAR(6);
CREATE DOMAIN dom_Mail AS VARCHAR(50);
CREATE DOMAIN dom_Tlf AS INTEGER;
CREATE DOMAIN dom_Spsml AS VARCHAR(500);

    /* Overvej Rabat til kunder  */
    /* Domains for BOG  */
CREATE DOMAIN dom_Isbn AS INTEGER;
CREATE DOMAIN dom_Forfatter AS VARCHAR(100);
CREATE DOMAIN dom_Titel AS VARCHAR(100);
CREATE DOMAIN dom_Forlag AS VARCHAR(100);
CREATE DOMAIN dom_Beskrivelse AS VARCHAR(500);

    /* Domains for ORDRE  */
CREATE DOMAIN dom_OrdreNr AS INTEGER;
CREATE DOMAIN dom_Varer AS VARCHAR(20);
CREATE DOMAIN dom_Date AS DATE;


    /* Domains for ORDRESPECIFIKATION  */
CREATE DOMAIN dom_Antal AS INTEGER;
CREATE DOMAIN dom_OrdreSpecNr INTEGER;


    /* TABELLERNE LAVES*/

/* Tabel-definitioner      Kunde  */
CREATE TABLE Kunde(

    kundeId    dom_KundeId    NOT NULL,
    navn          dom_Navn        NOT NULL,
    address      dom_Adresse      NOT NULL,
    postnummer dom_Postnummer    NOT NULL,
    email      dom_Mail        NOT NULL,
    tlf    dom_Tlf        NOT NULL,
    spm    dom_Spsml    NOT NULL,

PRIMARY KEY (KundeId)
/*FOREIGN KEY (Ordre_ID)*/
);


/* Tabel-definitioner      BOG    og opretter generator    */

CREATE TABLE Bog(

    isbn            dom_Isbn              NOT NULL,
    forfatter      dom_Forfatter      NOT NULL,
    titel        dom_Titel          NOT NULL,
    forlag        dom_Forlag            NOT NULL,
    beskrivelse    dom_Beskrivelse        NOT NULL,

PRIMARY KEY (isbn)
/*FOREIGN KEY (Ordre_ID)*/
);


/* Tabel-definitioner      ORDRE og opretter generator        */

CREATE TABLE Ordre(

    ordreNr          dom_OrdreNr          NOT NULL,
    varer          dom_Varer          NOT NULL,
    titel        dom_Date          NOT NULL,

PRIMARY KEY (ordreNr)
/*FOREIGN KEY (ordreSpecNr, KundeId)*/
);

/* Tabel-definitioner      ORDRESPEC    og opretter generator    */

CREATE TABLE OrdreSpec (

    antal            dom_Antal          NOT NULL,
    ordreSpecNr      dom_OrdreSpecNr      NOT NULL,

PRIMARY KEY (ordreSpecNr)
/*FOREIGN KEY (OrdreNr;Isbn )*/
);

/* Laver genterator funktionen */
CREATE GENERATOR PK_Kunde_ID;
CREATE GENERATOR PK_Ordre_ID;
CREATE GENERATOR PK_OrdreSpec_ID;
COMMIT;
EXIT;

Ovenstående er min generator som jeg skal gøre brug af, men mit spørgsmål er hvordan indsætter jeg triggeren som ifølge firebird's udviklere ser sådan ud:

/*Optæller hvis der kommer nu forekomst*/
CREATE TRIGGER OPRET_OrdreSpec_ID FOR  OrdreSpec_ID
ACTIVE BEFORE INSERT
AS
BEGIN
  IF(NEW.OrdreSpec_ID_ID IS NULL) THEN
    NEW.OrdreSpec_ID_ID = GEN_ID(OrdreSpec_ID, 1);
END

Jeg har prøvet at lave noget af det, men hår hele tiden fejl.
Hvad går galt ?
Avatar billede pellelil Nybegynder
17. november 2004 - 14:07 #1
Måske et god ide hvis du sagde hvilken fejl du fik, og hvornår du får den!?. Jeg gætter på at de problem er at oprette din trigger og jeg gætter ligeledes at det er fordi du "har glemt" at "pakke" din trigger-oprettelse ind i SET TERM: http://www.eksperten.dk/spm/560217
Avatar billede lablo Nybegynder
18. november 2004 - 14:40 #2
Det var fordi der skulle pakkes triggere ind, så det var kanon link du lagde ind på tråden. Der var også lidt små ting i oprettelsen af række følgen
Avatar billede netro Nybegynder
28. november 2004 - 18:25 #3
To fluer med ét smæk ;)
Avatar billede pellelil Nybegynder
28. november 2004 - 21:07 #4
Ja, det er æ' så ring' endda ;-)
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