Avatar billede lablo Nybegynder
17. november 2004 - 12:03 Der er 2 kommentarer og
1 løsning

Oprettelse af Trigger i Firebird

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 ?
17. november 2004 - 12:47 #1
Har du ikke oprettet spørgsmålet i den forkerte kategori?
Avatar billede lablo Nybegynder
17. november 2004 - 13:52 #2
Det kunne der være noget om :-)
den er smuttet i farten :-)
Avatar billede lablo Nybegynder
17. november 2004 - 13:53 #3
Opretter samme spm i interbase !
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