MySQL 5 : Les vues — (part 3/7)
novembre 30, 2008
(<- précédent)
Restrictions
Lors de la création d’une vue, certaines contraintes doivent être prises en compte :
- Il n’est pas possible de créer un index sur une vue
- La vue ne peut pas contenir de sous-requêtes dans la clause FROM du SELECT.
- Il n’est pas possible d’utiliser de variables dans une vue.
- Les objets (tables et vues) nécessaires à la création de la vue doivent exister avant de la créer.
- Si un objet référencé par la vue est effacé, la vue n’est alors plus accessible.
- Une vue ne peut référencer une table temporaire (TEMPORARY TABLE)
- Il n’est pas possible de créer des vues temporaires.
- Il n’est pas possible d’associer un trigger à une vue.
- La définition d’une vue est « gelée » dans une requête préparée.
Exemple:
mysql> CREATE VIEW ma_vue AS SELECT 'première valeur'; Query OK, 0 rows affected (0.24 sec) mysql> desc ma_vue; +-----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+-------+ | première valeur | varchar(15) | NO | | | | +-----------------+-------------+------+-----+---------+-------+ 1 row in set (0.50 sec) mysql> PREPARE req_prepare FROM 'SELECT * FROM ma_vue'; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql> EXECUTE req_prepare; +-----------------+ | première valeur | +-----------------+ | première valeur | +-----------------+ 1 row in set (0.01 sec) ALTER VIEW ma_vue AS SELECT 'deuxième valeur'; Query OK, 0 rows affected (0.05 sec) mysql> desc ma_vue; +-----------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+-------------+------+-----+---------+-------+ | deuxième valeur | varchar(15) | NO | | | | +-----------------+-------------+------+-----+---------+-------+ 1 row in set (0.00 sec) mysql> EXECUTE req_prepare; +-----------------+ | première valeur | +-----------------+ | première valeur | +-----------------+ 1 row in set (0.00 sec)
Il faut en fait recréer la requête préparée :
mysql> DEALLOCATE PREPARE req_prepare; Query OK, 0 rows affected (0.00 sec) mysql> PREPARE req_prepare FROM 'SELECT * FROM ma_vue'; Query OK, 0 rows affected (0.00 sec) Statement prepared mysql> EXECUTE req_prepare; +-----------------+ | deuxième valeur | +-----------------+ | deuxième valeur | +-----------------+ 1 row in set (0.00 sec)
Architecte Solution Cloud chez Oracle
MySQL Geek, Architecte, DBA, Consultant, Formateur, Auteur, Blogueur et Conférencier.
—–
Blog: www.dasini.net/blog/en/
Twitter: https://twitter.com/freshdaz
SlideShare: www.slideshare.net/freshdaz
Youtube: https://www.youtube.com/channel/UC12TulyJsJZHoCmby3Nm3WQ
—–
[…] (à suivre… les restrictions pour créer une vue) […]
[…] (<- précédent) […]