sql >> Database >  >> RDS >> Sqlserver

Uitstelbare beperkingen in SQL Server

OT:Er zijn IMHO nogal wat dingen die SQL Server niet ondersteunt, maar die wel logisch zouden zijn in een bedrijfsomgeving:

  • Uitstelbare beperkingen zoals hier vermeld
  • MARS:Waarom moet je een optie instellen voor iets heel natuurlijks?
  • CASCADE DELETE-beperkingen:SQL Server staat slechts één enkel cascadatiepad toe voor een bepaalde CASCADE DELETE-beperking. Nogmaals, ik zie geen reden waarom het niet toegestaan ​​zou zijn om bij verwijdering door meerdere mogelijke paden te lopen:uiteindelijk, op het moment dat het echt wordt uitgevoerd, zal er altijd maar één pad daadwerkelijk worden gebruikt, dus waarom is dit een beperking?
  • Preventie van parallelle transacties op een enkele ADO.NET-verbinding.
  • Het forceren van elke opdracht die wordt uitgevoerd op een verbinding die een transactie heeft die binnen deze transactie moet worden uitgevoerd.
  • Bij het maken van een UNIEKE index wordt NULL behandeld alsof het een werkelijke waarde is en mag het slechts één keer in de index voorkomen. SQL's notie van NULL als een "onbekende waarde" zou er echter op wijzen dat NULL-waarden volledig worden genegeerd bij het maken van de index...

Al deze kleine dingen maken veel van de referentiële integriteit en transactiefuncties die je zou verwachten van een full-sized RDBMS bijna nutteloos in SQL Server. Omdat uitstelbare beperkingen bijvoorbeeld niet worden ondersteund, wordt het idee van een "transactie" als een extern consistente werkeenheid gedeeltelijk ontkend, waarbij de enige haalbare oplossing - met uitzondering van enkele vuile tijdelijke oplossingen - is om helemaal geen referentiële integriteitsbeperkingen te definiëren. Ik zou verwachten dat het natuurlijke gedrag van een transactie is dat je erin kunt werken op de manier en de volgorde van de bewerkingen die je wilt, en het systeem zal ervoor zorgen dat het consistent is op het moment dat je het begaat. Soortgelijke problemen komen voort uit de beperking, dat een referentiële integriteitsbeperking met ON DELETE CASCADE alleen kan worden gedefinieerd op een manier dat slechts één enkele beperking kan leiden tot de trapsgewijze verwijdering van een object. Dit past echt niet in de meeste realistische scenario's.



  1. Luister naar de Microsoft Access Podcast Aflevering 1

  2. Kunnen er meerdere primaire sleutels op een enkele tafel bestaan?

  3. Zoeken in volledige tekst werkt niet als het stopwoord is opgenomen, ook al is de lijst met stopwoorden leeg

  4. Zijn er nadelen aan het gebruik van een generieke varchar(255) voor alle op tekst gebaseerde velden?