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

Ограничението на външния ключ може да причини цикли или множество каскадни пътища?

SQL Server прави просто броене на каскадни пътища и вместо да се опитва да разбере дали действително съществуват цикли, той приема най-лошото и отказва да създаде референтните действия (КАСКАДА):можете и трябва да създавате ограниченията без референтните действия. Ако не можете да промените дизайна си (или това би компрометирало нещата), тогава трябва да помислите за използването на тригери като последна мярка.

FWIW разрешаването на каскадни пътища е сложен проблем. Други SQL продукти просто ще игнорират проблема и ще ви позволят да създавате цикли, като в този случай ще бъде състезание кой ще презапише стойността последна, вероятно поради невежеството на дизайнера (например ACE/Jet прави това). Разбирам, че някои SQL продукти ще се опитат да разрешат прости случаи. Фактът остава, SQL Server дори не се опитва, играе го изключително безопасно, като забранява повече от един път и поне ви казва така.

Самият Microsoft съветва използването на тригери вместо FK ограничения.



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

  2. DATEFROMPARTS() Примери в SQL Server (T-SQL)

  3. Как да намерите настройката ANSI_NULLS на базата данни в SQL Server (T-SQL)

  4. Матрица на поддържаните версии на SQL Server

  5. Как да получите списък с ограничение на първичния ключ от всички бази данни на екземпляр на SQL Server - SQL Server / TSQL урок, част 60