violation af foreign key error i interbase

Tags:    databaser

hejsa jeg er en nybegynder i udvikling af databaser. Jeg bruger interbase 6.0. Mit problem er følgende: jeg får violation of foreign key når jeg vil eksekvere mine insert statements efter jeg har oprettet min tabeller og oprettet fremmednøgler. Jeg har oprettet databasen i flg rækkefølge :

1 Oprettet domains og tabeller.

2 Lavet fremmednøgler.

3 Forsøgt at indsætte records med insert statements.

Koden er som følger :

CREATE DOMAIN DOM_DATE AS TIMESTAMP;

CREATE DOMAIN DOM_ID AS INTEGER NOT NULL;

CREATE DOMAIN DOM_POSTNR_ID AS INTEGER
CHECK (VALUE BETWEEN 0 AND 9999);


CREATE TABLE KONTAKTPERSON
(
PERSON_ID DOM_ID,
NAVN VARCHAR(25) NOT NULL,
STILLING VARCHAR(25) NOT NULL,
KOMPETENCE VARCHAR(25) NOT NULL,
VIRKSOMHED VARCHAR(25) NOT NULL,
AFDELING VARCHAR(25) NOT NULL,
TELEFONNR VARCHAR(20) NOT NULL,
MOBILNR VARCHAR(20),
EMAIL VARCHAR(20),
ADRESSE VARCHAR(30) NOT NULL,
POSTNR DOM_POSTNR_ID NOT NULL,
KOMP_ID DOM_ID NOT NULL,
PRIMARY KEY (PERSON_ID)
);

CREATE TABLE VIRKSOMHED
(
VIRK_ID DOM_ID,
Virksomhedsnavn varchar(25) NOT NULL,
TELEFONNR VARCHAR(20) NOT NULL,
FAX VARCHAR(20),
EMAIL VARCHAR(20),
ADRESSE VARCHAR(30) NOT NULL,
POSTNR DOM_POSTNR_ID NOT NULL,
PERSON_ID DOM_ID NOT NULL,
PRIMARY KEY (VIRK_ID)
);

CREATE TABLE PROJEKT
(
PRJ_ID DOM_ID,
PROJEKTNAVN VARCHAR(25) NOT NULL,
PROJEKTLEDER VARCHAR(25) NOT NULL,
DATO DOM_DATE NOT NULL,
PERSON_ID DOM_ID NOT NULL,
PRIMARY KEY (PRJ_ID)
);

CREATE TABLE KOMPETENCE
(
KOMP_ID DOM_ID,
ANTALKOMP INTEGER NOT NULL,
KOMPTYPE VARCHAR(25) NOT NULL,
PRIMARY KEY (KOMP_ID)
);

CREATE TABLE HISTORIK
(
HIST_ID DOM_ID,
FRITEKST VARCHAR(80),
DATO DOM_DATE,
PERSON_ID DOM_ID NOT NULL,
PRJ_ID DOM_ID NOT NULL,
VIRK_ID DOM_ID NOT NULL,
PRIMARY KEY (HIST_ID)
);

ALTER TABLE HISTORIK ADD FOREIGN KEY (PERSON_ID) REFERENCES
KONTAKTPERSON (PERSON_ID) ON UPDATE CASCADE;

ALTER TABLE HISTORIK ADD FOREIGN KEY (PRJ_ID) REFERENCES
PROJEKT (PRJ_ID) ON UPDATE CASCADE;

ALTER TABLE HISTORIK ADD FOREIGN KEY (VIRK_ID) REFERENCES
VIRKSOMHED (VIRK_ID) ON UPDATE CASCADE;

ALTER TABLE KONTAKTPERSON ADD FOREIGN KEY (KOMP_ID) REFERENCES KOMPETENCE (KOMP_ID) ON UPDATE CASCADE;

ALTER TABLE PROJEKT ADD FOREIGN KEY (PERSON_ID) REFERENCES
KONTAKTPERSON (PERSON_ID) ON UPDATE CASCADE;

ALTER TABLE VIRKSOMHED ADD FOREIGN KEY (PERSON_ID) REFERENCES KONTAKTPERSON (PERSON_ID) ON UPDATE CASCADE;


INSERT INTO HISTORIK (HIST_ID, FRITEKST , DATO, PERSON_ID, PRJ_ID, VIRK_ID)
VALUES (15, 'Bestyrelsesmøde d.22-04-06', '08-06-06', 15, 15, 15);

INSERT INTO KOMPETENCE (KOMP_ID, ANTALKOMP, KOMPTYPE)
VALUES (1, 1, 'Java programmør ');

INSERT INTO KONTAKTPERSON (PERSON_ID, NAVN, STILLING, KOMPETENCE, VIRKSOMHED, AFDELING, TELEFONNR, MOBILNR, EMAIL, ADRESSE, POSTNR, KOMP_ID)
VALUES (1, 'Morten Larsson', 'Systemudvikler', 'java programmør', 'SEB kort', 'IT', '43567719', '20743001', 'mobola@mail.dk', 'Park alle 295', 2605, 1);

INSERT INTO VIRKSOMHED (VIRK_ID, VIRKSOMHEDSNAVN, TELEFONNR, FAX, EMAIL, ADRESSE, POSTNR, PERSON_ID)
VALUES (21, 'CPH', '32665981', '32665988', 'cph@cph.dk', 'Lufthavnsvej 33', 2300, 21);

INSERT INTO PROJEKT (PRJ_ID, PROJEKTNAVN, PROJEKTLEDER, DATO, PERSON_ID)
VALUES (1, 'Elearning', 'Bent Hansen', '10-04-04', 17);

Fejlen opstår første gang jeg eksekverer et insert statement. Nogen der kan se hvad jeg gør forkert her ?












Det er fordi du har en fremmednøgle til projekt tabellen, hvor der ikke er den reference til det projekt id du forsøger at referere (eks. hvis du skriver 1 som projekt id, og der ikke findes en reference i projekt tabellen med id 1) så kan den ikke lave en reference og det er derfor du ikke kan få lov til at gøre det.



t