Portál AbcLinuxu, 14. května 2025 05:09

Dotaz: MySQL - Cizi klice a integ.omezeni typu ON DELETE - stav ?

6.10.2008 17:45 J@rys | skóre: 11 | blog: Jarduv_blog
MySQL - Cizi klice a integ.omezeni typu ON DELETE - stav ?
Přečteno: 2268×
Odpovědět | Admin
Zdarvim databazove GURU, pred nimiz se sklanim.

Rad bych se pozeptal odborniku na soucasny stav podbory integritnich omezeni v DB enginech MySQL - jde predevsim o podporu cizich klicu a integ. omezeni typu ON DELETE CASCADE, ON DELETE UPDATE. Plati stale i uverze MySQL 5.1 a vyssi, ze je toto podporovane jen u InnoDB? Nejak se ztracim ve vsi te dokumentaci a moznostech nastavovani. Poradte. Zkousel jsem si smazat nektere radky v tabulce, jejiz primarni klic byl soucasne cizim klicem v jine tabulce. A v teto jine tabulce SŘBD nezasahl, ackoliv by snad mel..

Driv jsem delal na Oraclu. Diky za odpovedi. J@.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Heron avatar 6.10.2008 21:17 Heron | skóre: 53 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: MySQL - Cizi klice a integ.omezeni typu ON DELETE - stav ?
Odpovědět | | Sbalit | Link | Blokovat | Admin

U 5.1 jsou transakce "jen" u InnoDB. Na 6.0 se něco plánuje:

The foreign key support in InnoDB has seen improvements in each major version of MySQL. Foreign key support generic to all storage engines is scheduled for MySQL 6.x; this should resolve any inadequacies in the current storage engine specific implementation.
Heron
7.10.2008 07:35 fixinko | skóre: 15 | Bratislava
Rozbalit Rozbalit vše Re: MySQL - Cizi klice a integ.omezeni typu ON DELETE - stav ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslim ze PostgreSQL ta v tomto plne uspokoji :-).
finc avatar 8.10.2008 23:28 finc | skóre: 8 | blog: Finc | Kolín
Rozbalit Rozbalit vše Re: MySQL - Cizi klice a integ.omezeni typu ON DELETE - stav ?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Referencni integrity jsou u vsech typu, ktere podporuji plne transakcni zpracovani. Jinymi slovy se da rict, ze se vyhradne jedna o InnoDB. O dalsich typech nema cenu premyslet, protoze nic vyznamneho neprinasi (alespon zatim). Od verze 6.0 by jsme se snad meli dockat Falcon engine, ktery by mel prinest nejenom tuto moznost. Pokud jsi vytvoril danou referencni integritu a pretypoval tabulku, tak je dost mozne, ze jsi tuto definici zahodil. Jinak referencni integrita se laicky da popsat treba takto: ON UPDATE CASCADE - cizi klic se muze zmenit, pokud se zmenil odkaz daneho klice
ON UPDATE RESTRICT - cizi klic se nemuze zmenit na pozadavek zmeny odkazu, tudiz se zmena neprovede
ON DELETE CASCADE - pokud cizi klic ztrati referenci, tak se dany zaznam smaze
ON DELETE RESTRICT - zaznam s cizim klicem se nemuze smazat na pozadavek odkazu, tudiz se odkaz ani zaznam s cizim klicem nesmaze
ON DELETE SET NULL - pokud je odkaz smazan, tak se cizi klic nastavi na NULL (pouze, pokud podle definice muze byt sloupec NULL)
Kdo Vam dal pravo ty lidi urazet? A kdo ti dal pravo cumet z okna, ty kr.vo!
9.10.2008 12:01 Ivan
Rozbalit Rozbalit vše OT
Odpovědět | | Sbalit | Link | Blokovat | Admin
Sry za flame. Cca pred rokem jsem se bavil s jednim vyvojarem mysql a ptal jsem se ho jak se implementuji integritni omezeni v db, ktera podporuje vice db enginu. On rek neco v tom smyslu, ze to prakticky neda implementovat a at si pockam na novej db engine, kterej nahradi vsechny predchozi. Takze bych v pripade mysql radsi na nic takovyho nespolehal. Na udrzovani integrity dat potrebujete transakce. Engine ktery transakce nepodporuje nemuze kontrolovat integritu dat.

11.10.2008 11:07 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: OT
Tak když už flame…
Na udrzovani integrity dat potrebujete transakce.
Na udržování integrity dat potřebujete v první řadě rozum :-)
Ještě na tom nejsem tak špatně, abych četl Viewegha.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.