sql >> Databasteknik >  >> RDS >> Oracle

Vilket är det bästa sättet att upprätthålla en "delmängd"-relation med integritetsbegränsningar

Ett av problemen med SQL är dess dåliga stödnivå för integritetsbegränsningar, särskilt referensrestriktioner.

För alla praktiska ändamål kan ditt problem inte lösas med SQL-begränsningar om du inte inaktiverar begränsningarna när du vill infoga en rad i en tabell. Anledningen är att SQL kräver att tabeller uppdateras en i taget och därför måste begränsningen överträdas när nya rader infogas. Detta är en grundläggande begränsning av SQL och alla stora DBMS lider av det.

Det finns några lösningar men ingen av dem är perfekt. Du kan använda DEFERRABLE-begränsningar om ditt DBMS har dem (till exempel Oracle). En UTDRAGSBAR begränsning är egentligen bara ett enkelt sätt att inaktivera en begränsning. Eller så kan du använda utlösare, vilket innebär att regeln upprätthålls procedurmässigt snarare än genom en korrekt databasrestriktion.



  1. Uppdatera ett databaspostkonto (SSMS)

  2. Lagrad procedur och fylla i en Temp-tabell från en länkad lagrad procedur med parametrar

  3. UPPDATERA flera rader från flera parametrar i nodejs/pg

  4. Hur man ställer in kolumner när man använder hjälpare i pg-promise