yibman
04-16-2006, 10:46 AM
Hello i am a beginner in developing sql databases in interbase. My problem is as follows : I get violation of foreign key, when i am executing my insert statements. I have created my database in the following order :
1 Created domains and tables.
2 Created foreign keys through my alter table statements.
3 Tried to insert records with insert statements.
Source code :
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);
The error occurs the first time i execute my insert statement. Can anybody tell me what i am doing wrong ?.
allan
1 Created domains and tables.
2 Created foreign keys through my alter table statements.
3 Tried to insert records with insert statements.
Source code :
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);
The error occurs the first time i execute my insert statement. Can anybody tell me what i am doing wrong ?.
allan