Skip to main content

Les vues et contraintes

Voici un exemple de vue qui provient d'un exercice de labo:

-- La vue s'appelle "chateau" et va lister tous les biens de type chateau
CREATE VIEW chateau AS

-- Ici on peut mettre la requête qui permet de lister tous les biens de type chateau
SELECT b.* 
FROM Bien b 
JOIN CATEGORIE_BIEN cb ON cb.ID_CATBIEN = b.ID_CATBIEN 
WHERE cb.DESCRIPTION = 'Château'

-- Cette ligne indique que si on veut ajouter un élément dans la vue, elle doit respecter la condition de la requête
WITH CHECK OPTION;
-- On aurait aussi pu utiliser "WITH READ ONLY" si on veut empécher d'y insérer des données

Ainsi ici, on a créé un genre de table spéciale appelée "château" que l'on peut ensuite accorder l'accès à un utilisateur. Ainsi, cet utilisateur ne pourra insérer que des châteaux dans la base de donnée et ne pourra voir que la liste des châteaux et rien d'autre.

Attention, pour qu'une vue soit modifiable, il faut qu'elle soit la plus minimale possible (sans jointures, ni group by, ni opérations ensemblistes)

Contraintes

On peut aussi ajouter des contraintes directement sur la table, par exemple une clé étrangère ou encore la vérification d'une condition.

-- Modification de la table Alerter pour y ajouter une contrainte que statut ne peut être que L ou N
ALTER TABLE Alerter 
  -- La condition doit toujours être en parenthèse
	ADD CONSTRAINT statutRestriction CHECK (STATUT IN ('L', 'N'));