Mam tri tabulky:
crete table hrac (id1 integer primary key auto_increment) type=InnoDB;
crete table klub (id2 integer primary key auto_increment) type=InnoDB;
create table hraje (kdo integer references hrac(id) on delete restrict
on update no action,
kde integer references klub(id2),
primary key(kdo,kde))type=InnoDB;
Toto mi nejde:
Musim uvadet typ atributu kdyz jsou v referenci ke klici jine tabulky (3.tab.)?
Dale bych chtel kdyz vymazu z 1. tabulky nejakeho hrace, aby se vymazal i z 3.tabulky nebo zmenil jeho id a zmenilo by se i opet v 3. tabulce (i kdyz menit id neni asi nejlepsi,ale zajima me to).
Diky za kazdou odpoved.
Ze by v MySQL nefungovaly reference? ;)
jinak by to bylo on delete cascade a on update cascade, aby se menilo dle zavilsosti..
a referenci staci uvest na patricnou tabulku (hrac, klub) a pokud bys neuvedl co chces brat, vzal by se myslim primarni klic, ale je lepsi uvest ze chces id1, id2.
ale fakt mam dojem ze v tyhle mysql verzi nejsou cizi klice podporovany.
vygooglil jsem tohle
http://dev.mysql.com/doc/maxdb/en/6d/117c5fd14811d2a97400a0c9449261/content.htm
tam je to popsany, vlozit me to necha, ale cizi klice uplne ignoruje :-/
nechtej nam sem admini dat PostgreSQL? ;-)
Tak se mi to podarilo:
create table klub(
id integer primary key,hrac integer,foreign key hrac_r
eference (hrac) references osoba(id) on delete cascade on update cascade) type=I
nnoDB;
create table klub(
id integer primary key,
hrac integer,
foreign key hrac_reference (hrac) references osoba(id) on delete cascade on update cascade) type=InnoDB;
Ale funguje to jen kdyz cizi klic definuju mimo definici atributu a typ tabulky musi byt InnoDB.
hmm, znal jsem jen MyISAM.. InnoDB vypada dobre, prinasi podporu nekterejch veci, nevite nekdo co ma za nevyhody?