Check constraint: diferència entre les revisions

Contingut suprimit Contingut afegit
Editant. Em passo al codi, perquè hi ha masses <code> i és un estres.
traduïnt
Línia 1:
{{editant}}
Una '''check constraint''' és un tipus de [[Integritat de dades|restricció d'integrat]] en [[Structured Query Language|SQL]] que especifica un requisit que ha de ser complert per cada [[Registre (informàtica)|fila]] d'una [[Taula (base de dades)|taula]] de la base de dades. La restricció ha de ser un predicat i es pot referir a una o múltiples [[Columna (base de dades)|columnes]] de la taula. El resultat del predicat pot ser qualsevol <code>CERTTRUE</code>, <code>FALSFALSE</code>, o <code>DESCONEGUTUNKNOWN</code>, segons la presència de [[NULL (SQL)|NULLs]]. Si el predicat avalua <code>DESCONEGUTUNKNOWN</code>, llavors la restricció no és violada i la fila pot ser inserida o actualitzada a la taula. Aquest comportament és contrari als predicats a les clàusules WHERE dins una sentència [[SELECT (SQL)|SELECT]] o [[UPDATE (SQL)|UPDATE]].
 
Per exemple, en una taula que conté productes, hom podria afegir una check constraint tal que el preu d'un producte i la quantitat d'un producte no pot tenir un valor negatiu:
Línia 11:
 
== Definició ==
CadaLes check constraint hanomés depoden ser definidadefinides ena través d'una sentència <code>CREARCREATE TAULATABLE</code> o <code>ALTERAALTER TABLE</code> declaraciófent ús de TAULAla que utilitza lasegüent sintaxi:
<code>
CREATE TABLE ''nom_taula'' (
...,
CONSTRAINT ''nom_constraint'' CHECK ( ''predicat'' ),
...
)
 
ALTER TABLE ''nom_taula''
Si el constrenyiment de control refereix a una columna sola només, és possible d'especificar el constrenyiment mentre part de la definició de columna.
ADD CONSTRAINT ''nom_constraint'' CHECK ( ''predicat'' )
</code>
 
Es pot definir una restricció que només controli les dades d'una columna amb la sentència següent:
 
<code>
CREATE TABLE ''nom_taula'' (
...
''nom_columna'' ''tipus'' CHECK ( ''predicat'' ),
...
)
</code>
 
== NO constrenyiment de NULL ==