sql >> Databasteknik >  >> RDS >> Sqlserver

En begränsning som bara tillåter en av två tabeller att referera till en bastabell

CHECK-begränsningar med UDF:er (vilket är Odeds svar) skalas inte bra och har dålig samtidighet. Se dessa:

  • Skalära UDF:er insvept i CHECK-begränsningar är mycket långsamma och kan misslyckas för flerradsuppdateringar
  • Tony Rogerson

Så:

  • skapa en ny tabell, säg TableA2XY
  • denna har PK för Tabell A och en kolumn char(1) med en CHECK för att tillåta endast X eller Y. Och en unik begränsning för PK för A också.
  • tabellX och tabellY har ny kolumn char(1) med en bock för att endast tillåta X respektive Y
  • tabellX och tabellY har sina FK till TableA2XY på båda kolumnerna

Detta är supernyckeln eller subtypmetoden

  • alla DRI-baserade
  • inga utlösare
  • inga udf:er med tabellåtkomst i CHECK-begränsningar.


  1. MariaDB CURRENT_DATE() Förklarad

  2. MySQL-prestanda:Identifiera långa frågor

  3. Visa framsteg medan du gör Inbackground

  4. Brister med mysql_real_escape_string?