Avatar billede yibman Nybegynder
16. april 2006 - 17:06 Der er 2 kommentarer

violation of foreign key i interbase

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 ?
Avatar billede arne_v Ekspert
16. april 2006 - 17:10 #1
ja ...

du har bedt om at du kan indsætte i historik tabbellen med projekt id som
er i projekt tabellen

så hvis projekt id 15 ikke eksisterer i projekt tabellen så giver

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);

fejl
Avatar billede arne_v Ekspert
19. juni 2006 - 01:35 #2
OK ?
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