Hi, 
I have encountered the following situation. Can you tell me - is it bug or 
feature. Excuse me if it is a silly question.
I have two tables:
CREATE TABLE UNITES (
    CODE         VARCHAR(10) NOT NULL,
    LOT          VARCHAR(10) NOT NULL,
    SITE         VARCHAR(10) NOT NULL,
    DESCRIPTION  VARCHAR(100)
);

ALTER TABLE UNITES ADD CONSTRAINT PK_UNITES PRIMARY KEY (CODE, LOT, SITE);

CREATE TABLE LOCATION (
    ID         INTEGER NOT NULL,
    UCODE      VARCHAR(10),
    ULOT       VARCHAR(10),
    USITE      VARCHAR(10),
    ZONE       INTEGER,
    WAREHOUSE  INTEGER
);

ALTER TABLE LOCATION ADD CONSTRAINT PK_LOCATION PRIMARY KEY (ID);

ALTER TABLE LOCATION ADD CONSTRAINT FK_LOCATION_1 FOREIGN KEY (UCODE, ULOT, 
USITE) REFERENCES UNITES (CODE, LOT, SITE);

So location references units using foreign key.

Let's create two unites from one lot:

INSERT INTO UNITES (CODE, LOT, SITE, DESCRIPTION) VALUES ('A1', 'L1', 'S1', 
'abc');
INSERT INTO UNITES (CODE, LOT, SITE, DESCRIPTION) VALUES ('A2', 'L1', 'S1', 
'bcd');

I expected that the following instruction will not be exectued:
INSERT INTO LOCATION (ID, UCODE, ULOT, USITE, ZONE, WAREHOUSE) VALUES (1, 'A3', 
NULL, NULL, NULL, NULL);
because there is no A3 entry in unites table, but it IS! Firebird allows to add 
record with value which doesn't exist in master table.
Thanks in advance
Pawel

Reply via email to