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 iciici, on a créé uneun genre de table spéciale appelléappelée "chateau"château" que l'on peut ensuite accorder l'accès à un utilisateur. AinsiAinsi, cet utilisateur ne pourra insérer que des chateauchâteaux dans la base de donnée et ne pourra voir que la liste des chateauxchâ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'));