sql >> Databáze >  >> RDS >> Sqlserver

Omezení, které umožňuje pouze jedné ze dvou tabulek odkazovat na základní tabulku

Omezení CHECK s UDF (což je Odedova odpověď) se špatně škálují a mají špatnou souběžnost. Viz tyto:

  • Skalární UDF zabalené do omezení CHECK jsou velmi pomalé a mohou selhat u víceřádkových aktualizací
  • Tony Rogerson

Takže:

  • vytvořte novou tabulku, řekněme TableA2XY
  • toto má PK tabulky A a sloupec char(1) s CHECK, který umožňuje pouze X nebo Y. A také jedinečné omezení PK A.
  • tableX a tableY mají nový sloupec char(1) se zaškrtnutím povolit pouze X nebo Y, v daném pořadí
  • tableX a tableY mají v obou sloupcích své FK až TableA2XY

Toto je přístup superklíče nebo podtypu

  • vše na základě DRI
  • žádné spouštěče
  • žádné udfs s přístupem k tabulce v omezeních CHECK.


  1. Jak přidat zdroj dat PostgreSQL do WildFly 9.0?

  2. Použijte IDENT_CURRENT() k vrácení aktuální hodnoty identity ve sloupci identity na serveru SQL Server

  3. jak použít dbms_scheduler ke spuštění úlohy každých 30 minut

  4. Pokus o export Oracle přes PL/SQL dává datum 0000-00-00