Hallo an Alle,
habe hier ein wirkliches Problem mit MySQL. Ich scheitere an der Definition von zwei Primary Keys in einer Datenbanktabelle. Dies geht ja zum Glück noch. Im nächsten Schritt allerdings sollen entsprechend zu den Keys auch Constraints definiert werden. Dabei nimmt MySQL aber immer nur den als ersten definierten Primary Key. Ich verwende MySQL und InnoDB. Kann mir jemand weiterhelfen wie es auch führ beide Schlüssel zu lösen ist?
Anbei habe ich den entsprechenden Quellcode.
-- **********************************
-- * Standard SQL generation *
-- * Thu Jul 03 15:45:41 2003 *
-- **********************************
-- Database Section
-- ________________
-- create database Buchverwaltung;
-- DBSpace Section
-- _______________
-- Table Section
-- _____________
create table Buch (
ISBN numeric(10) not null ,
Autoren char(20) not null ,
InventarNR numeric(10) not null ,
Titel char(30) not null ,
primary key (ISBN)) Type=InnoDB;
create table Lehrveranstaltung (
LV_Nr numeric(5) not null ,
LV_Name char(20) not null ,
Gebäude char(10) not null ,
Raum numeric(5) not null ,
Straße char(20) not null ,
primary key (LV_Nr)) Type=InnoDB;
create table empfiehlt (
ISBN numeric(10) not null ,
LV_Nr numeric(5) not null ,
primary key (ISBN, LV_Nr)) Type=InnoDB;
-- Constraints Section
-- ___________________
-- alter table Lehrveranstaltung add constraint
-- check(exists(select * from empfiehlt
-- where empfiehlt.LV_Nr = LV_Nr));
alter table empfiehlt add constraint FKemp_Buc
foreign key (ISBN)
references Buch(ISBN);
alter table empfiehlt add constraint FKemp_Leh
foreign key (LV_Nr)
references Lehrveranstaltung(LV_Nr);
An der Stelle wird lediglich der Constraint für ISBN gebildet, es werden in der Anwendung jedoch beide benötigt.
-- Index Section
-- _____________
create unique index IDBuch
on Buch (ISBN);
create unique index IDLehrveranstaltung
on Lehrveranstaltung (LV_Nr);
create unique index IDempfiehlt
on empfiehlt (LV_Nr, ISBN);
create index FKemp_Leh
on empfiehlt (LV_Nr);
create index FKemp_Buc
on empfiehlt (ISBN);
Schon jetzt vielen Dank für Eure Hilfe.
PS: Bin neu hier und bitte darum eventuelle Formfehler zu entschuldigen.