Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy powinienem używać reguły CASCADE DELETE?

ON DELETE CASCADE jest w porządku, ale tylko wtedy, gdy wiersze zależne są naprawdę logicznym rozszerzeniem usuwanego wiersza. Na przykład, OK, aby DELETE ORDERS usunęło powiązane ORDER_LINES, ponieważ wyraźnie chcesz usunąć to zamówienie, które składa się z nagłówka i kilku wierszy. Z drugiej strony, USUŃ KLIENTA nie powinno usuwać powiązanych ZAMÓWIEŃ, ponieważ ZAMÓWIENIA są ważne same w sobie, nie są tylko atrybutami klienta.

Jednym ze sposobów myślenia o tym jest:jeśli wydam DELETE X i usunie również Y, czy będę szczęśliwy czy nieszczęśliwy? A jeśli wydam DELETE X i otrzymam informację „nie mogę usunąć X, ponieważ Y istnieje”, czy będę zadowolony z ochrony, czy zirytowany niedogodnościami?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server COALESCE() Objaśnienie

  2. Pobierz rekordy z ostatniego miesiąca na serwerze SQL

  3. Przecinki w danych CSV

  4. Ostatnio wykonane zapytania dla określonej bazy danych

  5. Eksportuj dane zapytań SQL do programu Excel