Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Разбиране на правилата за актуализиране и изтриване за взаимоотношения в SSMS 2008

Външният ключ дефинира връзка родител - дете между две таблици. Първичният ключ в родителската таблица е външният ключ в до n дъщерни реда на таблицата.

Сега, ако този първичен ключ в родителската таблица получи UPDATE, се включва UPDATE RULE. Или всички дъщерни редове също се актуализират, зададени на NULL или каквото и да е друго. Най-добрата практика обаче е да имате първичен ключ, който НИКОГА не се променя (фиксиран ID или нещо подобно), така че това е по-малко важното правило.

По-важното е правилото DELETE - какво ще стане, ако родителският ред бъде изтрит (напр. поръчката е изтрита)? Можете също така да изтриете всички дъщерни редове (всички редове за поръчка) с CASCADE DELETE или можете да зададете техния външен ключ на NULL (те вече нямат родител) - това зависи изцяло от конкретния ви сценарий.

В сценария Поръчка/редове за поръчка може да е напълно полезно да изтриете редовете за поръчка, когато цялата поръчка бъде изтрита, но вероятно не искате да изтриете продукт, само защото поръчка, която го споменава, е била изтрита - няма един единствен ПРАВИЛЕН отговор - зависи от вашия сценарий и вашето приложение.

Марк



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Търсете име на колона във всички бази данни

  2. Случаи на използване на SQL Server MERGE декларация:Синхронизиране на онлайн таблици и хронология

  3. Как мога да извикам SQL функция в C#?

  4. Стандартни низове с числов формат, поддържани от FORMAT() в SQL Server

  5. SqlException не беше обработено