sql >> Database teknologi >  >> RDS >> Sqlserver

En begrænsning, der kun tillader en af ​​to tabeller at referere til en basistabel

CHECK-begrænsninger med UDF'er (som er Odeds svar) skalerer ikke godt og har dårlig samtidighed. Se disse:

  • Skalære UDF'er pakket ind i CHECK-begrænsninger er meget langsomme og kan mislykkes ved opdateringer med flere rækker
  • Tony Rogerson

Så:

  • opret en ny tabel, sig TableA2XY
  • dette har PK'en i tabel A og en char(1)-kolonne med en CHECK for at tillade kun X eller Y. Og også en unik begrænsning på PK'en af ​​A.
  • tableX og tableY har ny char(1)-kolonne med en markering for kun at tillade henholdsvis X eller Y
  • tabelX og tabelY har deres FK til TabelA2XY på begge kolonner

Dette er supernøgle- eller undertypetilgangen

  • alt DRI-baseret
  • ingen udløsere
  • ingen udf'er med tabeladgang i CHECK-begrænsninger.


  1. SqlServer:Login mislykkedes for brugeren

  2. EXP() Eksempler i SQL Server

  3. Lighedsfunktion i Postgres med pg_trgm

  4. Sådan finder du duplikerede poster i MySQL