sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvad betyder ekskluderingsrestriktionen "EXCLUDE USING Gist (c WITH &&)"?

Mens en CHECK begrænsning evaluerer et udtryk baseret på en enkelt række i tabellen, en EXCLUDE constraint evaluerer en sammenligning af to rækker i tabellen. Tænk på det som en generaliseret UNIQUE begrænsning:I stedet for "ingen to rækker kan være ens", kan du sige ting som "ingen to rækker overlapper hinanden", eller endda "ingen to rækker kan være forskellige ".

For at opnå dette uden at kontrollere enhver mulig kombination af værdier, har den brug for en passende indeksstruktur, som gør det muligt at finde mulige overtrædelser, når du indsætter eller opdaterer en række. Dette er hvad gist er en del af erklæringen henviser til:en bestemt type indeks som kan bruges til at fremskynde andre operationer end ligestilling.

Resten af ​​erklæringen er selve begrænsningen:c er kolonnen, der testes, og && er operatoren, som ikke må returnere sand for et par rækker. I dette tilfælde && er "overlaps"-operatoren som angivet på siden med geometriske operatorer .

Så sat sammen, begrænsningen EXCLUDE USING gist (c WITH &&) oversættes til "ikke to værdier af c skal overlappe hinanden (mere præcist, A.c && B.c skal returnere false eller null for alle distinkte rækker A og B ), og brug venligst en gist indeks for at overvåge denne begrænsning".




  1. PHP Sortering fra serialiserede data

  2. Har et problem med at binde parametre til en BOB-erklæring

  3. Kopiering af tabel fra en Oracle DB til en anden via enkelt-dirigeret DBLink

  4. Sådan fjerner du de efterfølgende mellemrum efter månedens navn i Oracle