oracle: pourquoi ne peux-je l'insérer dans la vue
J'ai créé un simple point de vue avec des colonnes d'une table unique. Lorsque j'essaie d'insérer des valeurs dans la table, je reçois le ORA_01732 erreur que dml n'est pas juridique sur ce point de vue. J'ai une clause order by dans la définition de la vue que j'ai recueillies n'est pas permis pour elle de nature à jour et je vois que j'ai sans doute d'utiliser un LIEU DE type de clause dans la définition de la vue. Quelqu'un peut-il me montrer comment je ferais construire le point de vue à être mis à jour de cette façon?
ici est l'instruction create view:
create view CUST_VIEW
as select customer#,firstname,lastname,state
from book_customer
order by state, lastname;
- Vous avez le post de l'instruction CREATE VIEW pour nous d'être en mesure de conseiller sur la façon de faire la mise à jour.
ORDER BY
dans une vue est très discutable, et pas une pratique recommandée. - Pourquoi serait-on utiliser un order by dans une vue de l'esprit?
- son devoir à la maison qui me dit que pour définir la vue, de sorte qu'il donne l'ordre de nom de famille à l'intérieur de chaque état. mise à jour de la question à la vue de créer
Vous devez vous connecter pour publier un commentaire.
Êtes-vous sûr que le
order by
est la cause de votre observation?Je peux faire un insert sur une vue avec une clause order by:
Les instructions ci-dessus s'exécuter sans problème sur Oracle 11 R2.
Vous pourriez vouloir vérifier avec
USER_UPDATABLE_COLUMNS
les colonnes que vous pouvez insérer à:Vous avez raison, une vue avec une clause ORDER BY n'est pas, en soi, pouvant être mis à jour. Tout ce que vous avez à faire est de créer un déclencheur INSTEAD OF sur le point de vue d'exécuter la pochette que vous voulez.
Par exemple: disons que vous avez une vue ACTIVE_CUST_VIEW sur la table ALL_CUST