Board index » delphi » Can't I add a foreign Key that references foreign Key of other Table?

Can't I add a foreign Key that references foreign Key of other Table?

Dear All,
I want to add some tables:

CREATE TABLE Lang
(
   "LangID" VARCHAR(20) NOT NULL,
   PRIMARY KEY ("LangID")
);

CREATE TABLE JobIndLv1
(
   "JobIndLv1ID" VARCHAR(20) NOT NULL,
   PRIMARY KEY ("JobIndLv1ID")
);

CREATE TABLE JobIndLv1Locale
(
   "JobIndLv1ID" VARCHAR(20) NOT NULL,
   "LangID" VARCHAR(20) NOT NULL,
   "JobIndLv1" VARCHAR(50) NOT NULL,
   PRIMARY KEY ("JobIndLv1ID","LangID"),
   FOREIGN KEY ("LangID") REFERENCES Lang ("LangID") on delete cascade,
   FOREIGN KEY ("JobIndLv1ID") REFERENCES JobIndLv1 ("JobIndLv1ID") on delete cascade
);

CREATE TABLE JobIndLv2
(
   "JobIndLv1ID" VARCHAR(20) NOT NULL,
   "JobIndLv2ID" VARCHAR(20) NOT NULL,
   PRIMARY KEY ("JobIndLv1ID","JobIndLv2ID"),
   FOREIGN KEY ("JobIndLv1ID") REFERENCES JobIndLv1 ("JobIndLv1ID") on delete cascade
);

CREATE TABLE JobIndLv2Locale
(
   "JobIndLv1ID" VARCHAR(20) NOT NULL,
   "JobIndLv2ID" VARCHAR(20) NOT NULL,
   "LangID" VARCHAR(20) NOT NULL,
   "JobIndLv2" VARCHAR(50) NOT NULL,
   PRIMARY KEY ("JobIndLv1ID","JobIndLv2ID","LangID"),
   FOREIGN KEY ("JobIndLv1ID") REFERENCES JobIndLv2 ("JobIndLv1ID") on delete cascade,
   FOREIGN KEY ("JobIndLv2ID") REFERENCES JobIndLv2 ("JobIndLv2ID") on delete cascade,
   FOREIGN KEY ("LangID") REFERENCES Lang ("LangID") on delete cascade
);

The first 4 table adds successfully,but when I add the
table "JobIndLv2Locale" warning occurs:

"Cannot find UNIQUE INDEX with specified columns..."

Is it possible that I add a foreign key that reference
a key which is also references another table?

Thank you very much!

 

Re:Can't I add a foreign Key that references foreign Key of other Table?


The concept of foreign key is that must point to primary key or unique
identifier on parent table. Think about.

--
Sergio Samayoa
Lgica Software
http://www.geocities.com/logicasw/

"John" <john...@graduate.hku.hk> escribi en el mensaje
news:3b398d72$1_2@dnews...

Quote

> Dear All,
> I want to add some tables:

> CREATE TABLE Lang
> (
>    "LangID" VARCHAR(20) NOT NULL,
>    PRIMARY KEY ("LangID")
> );

> CREATE TABLE JobIndLv1
> (
>    "JobIndLv1ID" VARCHAR(20) NOT NULL,
>    PRIMARY KEY ("JobIndLv1ID")
> );

> CREATE TABLE JobIndLv1Locale
> (
>    "JobIndLv1ID" VARCHAR(20) NOT NULL,
>    "LangID" VARCHAR(20) NOT NULL,
>    "JobIndLv1" VARCHAR(50) NOT NULL,
>    PRIMARY KEY ("JobIndLv1ID","LangID"),
>    FOREIGN KEY ("LangID") REFERENCES Lang ("LangID") on delete cascade,
>    FOREIGN KEY ("JobIndLv1ID") REFERENCES JobIndLv1 ("JobIndLv1ID") on
delete cascade
> );

> CREATE TABLE JobIndLv2
> (
>    "JobIndLv1ID" VARCHAR(20) NOT NULL,
>    "JobIndLv2ID" VARCHAR(20) NOT NULL,
>    PRIMARY KEY ("JobIndLv1ID","JobIndLv2ID"),
>    FOREIGN KEY ("JobIndLv1ID") REFERENCES JobIndLv1 ("JobIndLv1ID") on
delete cascade
> );

> CREATE TABLE JobIndLv2Locale
> (
>    "JobIndLv1ID" VARCHAR(20) NOT NULL,
>    "JobIndLv2ID" VARCHAR(20) NOT NULL,
>    "LangID" VARCHAR(20) NOT NULL,
>    "JobIndLv2" VARCHAR(50) NOT NULL,
>    PRIMARY KEY ("JobIndLv1ID","JobIndLv2ID","LangID"),
>    FOREIGN KEY ("JobIndLv1ID") REFERENCES JobIndLv2 ("JobIndLv1ID") on
delete cascade,
>    FOREIGN KEY ("JobIndLv2ID") REFERENCES JobIndLv2 ("JobIndLv2ID") on
delete cascade,
>    FOREIGN KEY ("LangID") REFERENCES Lang ("LangID") on delete cascade
> );

> The first 4 table adds successfully,but when I add the
> table "JobIndLv2Locale" warning occurs:

> "Cannot find UNIQUE INDEX with specified columns..."

> Is it possible that I add a foreign key that reference
> a key which is also references another table?

> Thank you very much!

Other Threads