Consultes actives

Índex

 

Concepte

Les consultes actives modifiquen el contingut d'una taula ja existent. Hi ha tres tipus possibles de modificació:

En els exemples d'aquest tema partirem d'una taula inicial, "Planetes", que conté algunes deficiències introduïdes expressament. És la següent:

#

Amb les consultes actives successives, esmenarem els errors. Cada esmena actuarà sobre la taula resultant de la correcció feta en el punt anterior.

Cal tenir present que en la realitat una consulta activa no surt a compte si no fa un nombre gran de canvis, no pas si en fa pocs o només un com aquí.

 

Altes

Les altes de registres es fan amb aquesta sintaxi:

INSERT INTO "nom-de-la-taula"("nom-del-camp",...)
VALUES ('valor',...)

Afegirem a la taula 'Urà' i les seves dades a la taula "Planetes", que hi mancaven:

INSERT INTO Planetes(Planeta, Massa, Distancia)
VALUES ('Urà', '14.500', '19.18')

(Els exemples d'aquest tema s'han fet amb Access de Microsoft; per això els noms de taules i de camps no porten cometes.)

El nou contingut de la taula és

#

Si volem actualitzar tots els camps del nou registre, podem prescindir d'esmentar-los pel nom; a canvi, hem de fer-ne constar els valors dins de VALUES estricament per ordre.

Si hi ha un camp autonumèric, no s'ha d'incloure en la fórmula precedent; s'actualitzarà automàticament.

 

Modificacions

Les modificacions es fan amb aquesta sintaxi:

UPDATE "nom-de-la-taula"
SET "nom-del-camp" = 'valor'
WHERE Condició que identifiqui els registres afectats.

Corregirem la massa de Júpiter, que no és 31,8 sinó 318:

UPDATE Planetes
SET Planetes.Massa = '318,000'
WHERE Planeta ='Júpiter'

I aquest és el resultat

#

Dins de SET es pot indicar més d'un aparellament camp/valor, separant-los amb comes.

Si s'omet la clausula WHERE, el canvi es produirà en tota la taula. I si WHERE aïlla una part d'una taula, es produirà només en aquesta.

 

Baixes

Les baixes de registres es fan amb aquesta sintaxi:

DELETE FROM "nom-de-la-taula"
WHERE Condició que identifiqui els registres afectats..

Esborrarem el registre de Plutó, que ha estat descatalogat de planeta:

DELETE FROM Planetes
WHERE Planeta = 'Plutó'

I aquest és el resultat

#

En absència de WHERE la taula quedaria buida!

 

Precacució

Les consultes actives sempre són arriscades: un error pot desfer en un moment la feina de molt de temps. És un bon costum crear un duplicat de la taula afectada abans d'aplicar la consulta activa i elimar-lo un cop s'ha comprovat que l'operació d'actualització ha anat bé.