sql >> Databáze >  >> RDS >> Sqlserver

Vysvětlení pravidel aktualizace a odstranění pro vztahy v SSMS 2008

Cizí klíč definuje vztah rodič - potomek mezi dvěma tabulkami. Primární klíč v nadřazené tabulce je cizí klíč v až n řádcích podřízené tabulky.

Pokud nyní primární klíč v nadřazené tabulce dostane UPDATE, spustí se PRAVIDLO AKTUALIZACE. Buď se aktualizují také všechny podřízené řádky, nastaví se na NULL nebo cokoli jiného. Nejlepším postupem je však mít primární klíč, který se NIKDY nemění (pevné ID nebo něco podobného), takže to je méně důležité pravidlo.

Tím důležitějším je pravidlo DELETE - co když je smazán nadřazený řádek (např. je smazána objednávka)? Můžete také odstranit všechny podřízené řádky (všechny řádkové položky objednávky) pomocí CASCADE DELETE, nebo můžete jejich cizí klíč nastavit na NULL (již nemají nadřazeného) – to je zcela na vašem konkrétním scénáři.

Ve scénáři Objednávka/řádky objednávek může být zcela užitečné smazat řádky objednávky, když se smaže celá objednávka, ale pravděpodobně nebudete chtít odstranit produkt, protože byla smazána objednávka, která na něj odkazuje – neexistuje jedna SPRÁVNÁ odpověď – záleží na vašem scénáři a vaší aplikaci.

Marc



  1. mySQL dateTime range Problém s dotazem

  2. 5 způsobů, jak zobrazit seznam dočasných tabulek pomocí T-SQL

  3. Případ Mysql nefunguje

  4. Rozdělit řetězce pomocí mysql