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

cizí klíče na stole z jiné databáze

Kdybych mohl, vyhnul bych se tomu – můžete prostě mít obě tabulky v jedné databázi a použít FK?

Nadřazené a podřízené tabulky jsou v různých databázích.

Ačkoli v této situaci nemůžete použít cizí klíč, existují zástupná řešení – můžete použít spouštěče nebo UDF zabalené do kontrolních omezení. Ať tak či onak, integrita vašich dat není zcela vodotěsná:pokud dojde k selhání databáze s vaší nadřazenou tabulkou a obnovíte ji ze zálohy, můžete snadno skončit jako sirotci.

Vztah rodič-dítě je vynucován spouštěči.

Existuje několik situací, kdy se spouštěče nespustí, například:

· Tabulka je zrušena.

· Tabulka je zkrácena.

· Nastavení pro vnořené a/nebo rekurzivní spouštěče zabraňují spuštění spouštěče.

Také spoušť může být nesprávná. V každém případě můžete skončit se sirotky ve vaší databázi.



  1. TSQL pro filtrování zkušeností z vícenásobného výběru

  2. T-SQL:Na rozdíl od řetězení řetězců - jak rozdělit řetězec do více záznamů

  3. jak udělit oprávnění uživatele ke konkrétnímu schématu?

  4. V databázi již existuje objekt s názvem '#columntable'