MySQL è il motore DB. Può utilizzare più motori di archiviazione. MyISAM è il motore di archiviazione predefinito per MySQL e non supporta chiavi esterne. InnoDB è un altro motore di archiviazione che supporta chiavi esterne. È necessario specificare ENGINE = InnoDB perché MySQL utilizzerà MyISAM per impostazione predefinita.
ON DELETE CASCADE elimina tutte le righe in una tabella con una chiave esterna che fa riferimento a una chiave eliminata. Penso che sia pericoloso e sconfigge molto lo scopo della restrizione delle chiavi straniere, quindi eviterei di usarlo, ma questa è solo la mia opinione personale.
Diciamo che avete:
+-------+-------+
| ordID | proID |
+-------+-------+
| 1 | 1 |
| 2 | 1 |
| 3 | 1 |
| 4 | 2 |
| 5 | 2 |
+-------+-------+
E su OrdersItems ha FOREIGN KEY (proID
) RIFERIMENTI Prodotti (proID
) ON DELETE CASCADE.
Poi, se qualcuno corre
DELETE FROM Products WHERE proID = 2
Poi verrà eliminato anche le righe con ordID 4 e 5 (IT cascate).
fonte
2010-10-10 06:22:59
così uso la cascata o no? che dire sull'aggiornamento –
non userei nessuno dei due. Tuttavia, se si desidera utilizzarli dipende totalmente da te. Suggerisco di leggerli completamente nell'API MySQL prima di prendere una decisione: http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html –