von Chris » Do 06 Feb, 2003 11:57
Hallo,
alle 3 vor mir haben Recht und doch Unrecht.
MySQL kann referenzielle Integrität sehr wohl überwachen. BDB und INNO Tabellen können dies. Da BDB etwas instabil ist (und weniger kann) rate ich sehr zu INNO DB.
Hier ein kleines Beispiel beim anlegen 2er Tabellen, die mit einem FK verbunden sind:
create table T_PoolTech(
PID bigint(20) unsigned NOT NULL auto_increment,
PTID int(10) un signed NOT NULL,
Primary Key (PID),
Key PTID (PTID),
FOREIGN Key (PTID) REFERENCES ilmtest.t_Technologie(TID)
) Type = INNODB;
create table T_article(
AID int(10) unsigned NOT NULL auto_increment,
AName varchar(50) NOT NULL,
ADescription varchar(255) Default NULL,
ADeveloper int(10) unsigned NOT NULL,
APic LongBlob Default NULL,
ATechPool BIGINT(20) unsigned NOT NULL,
ACustomer INT(10) unsigned NOT NULL,
ALastChange timestamp(14) NOT NULL,
Primary Key(AID),
Key AName(AName),
Key ADeveloper(ADeveloper),
Key ACustomer(ACustomer),
Key ALastChange(ALastChange),
Key ATechPool(ATechPool),
FOREIGN Key (ADeveloper) REFERENCES ilmtest.t_user(UID),
FOREIGN Key (ACustomer) REFERENCES ilmtest.t_customer(CID) on delete cascade,
FOREIGN Key (ADeveloper) REFERENCES ilmtest.t_user(UID),
FOREIGN Key (ATechpool) REFERENCES ilmtest.t_PoolTech(PID)
) Type = INNODB;
HInweis:
Seit version 3.50.irgendwas sind INNO DBs bei MySQL enthalten. Der Server ist als MAX zu starten. Ab Version 4.04 können (unter anderem) auch FK cascadierend arbeiten.
Chris