sql >> Database >  >> RDS >> Sqlserver

Kunt u een externe sleutel hebben op een weergave van een gekoppelde servertabel in SQLServer 2k5?

Externe sleutels kunnen niet worden gekoppeld aan niet-lokale objecten - ze moeten verwijzen naar lokale tabellen. U krijgt de foutmelding "maximaal aantal voorvoegsels" omdat u naar de tabel verwijst met een 4-delige naam (LinkedServer.Database.Schema.Object), en een lokaal object zou slechts een 3-delige naam hebben.

Andere oplossingen :

  1. Repliceer de gegevens van de bron (de locatie van de weergave) naar dezelfde server als de tabel waaraan u de sleutel probeert toe te voegen. Je kunt dit elk uur, dagelijks of wat dan ook doen, afhankelijk van hoe vaak de brongegevens veranderen.
  2. Voeg een trigger toe aan de brontabel om eventuele wijzigingen in uw lokale kopie door te voeren. Dit zou in wezen hetzelfde zijn als #1, maar met onmiddellijke populatie van veranderingen
  3. Voeg een INSTEAD OF"-trigger toe aan uw tabel die handmatig de externe-sleutelbeperking controleert door te selecteren op de gekoppelde server en de waarde te vergelijken die u probeert te INSERT/UPDATE. Als deze niet overeenkomt, kunt u de wijziging weigeren .


  1. UPDATE met ORDER BY en LIMIT werken niet in MYSQL

  2. EF 5 met orakel edmx StoreGeneratedPattern=Identiteitsprobleem

  3. Hoe verbinding maken met een PostgreSQL-server via JDBC in Android?

  4. Wat is SQL?