Trigger i Interbase / Firebird
Oprettelse af Trigger i Firebird 200 point fra labloX 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 ?