Bonjour,
j'ai créé une vue sur une table, et avec toad je ne peux pas modifier les données. Les zones de saisie de Toad semble comme blockées !!!
Bonjour,
j'ai créé une vue sur une table, et avec toad je ne peux pas modifier les données. Les zones de saisie de Toad semble comme blockées !!!
on ne peut pas updater une vue... une vue c'est qu'une requête SQL stockée en base et exécuté à chaque SELECT de la vue, comment Oracle pourrait-il mettre à jour des données non stockées ?![]()
Pas du tout, dans certain cas on peut modifier une vue :
faite le test suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 SQL> CREATE TABLE MARKETING.AA 2 ( 3 NOM VARCHAR2(15) NULL, 4 PRENOM VARCHAR2(15) NULL 5 ) 6 / Table crÚÚe. SQL> CREATE OR REPLACE VIEW MARKETING.VUE_AA 2 ( 3 NOM, 4 PRENOM 5 ) 6 AS 7 SELECT "NOM","PRENOM" 8 FROM aa 9 / Vue crÚÚe. SQL> insert into AA (nom,prenom) values ('tigger','scott'); 1 ligne crÚÚe. SQL> commit 2 ; Validation effectuÚe. SQL> insert into vue_AA (nom,prenom) values ('tigger2','scott2'); 1 ligne crÚÚe. SQL> commit 2 ; Validation effectuÚe. SQL>
Avec SQLPLUS et avec ACCESS en attachement ODBC ca marche parfaitement, c'est juste que peut etre Toad bride la chose !!!!
oui bien sûr, j'ai pas voulu compliqué la chose étant donné que faire un update d'une vue me parait particulièrement être une mauvaise pratique
Pour préciser ce que j'ai dit : on ne peut mettre à jour qu'une vue simple, qui ne contient pas calcul, ni de transformation, ni de jointure, etc...
PS : merci de penser aux balises CODE
non, ce n'est pas une mauvaise pratique. C'est aussi une façon de restreindre l'accès à seulement certaines colonnes ou lignes de la tables, style BLAKE ne peut mettre à jour que sa ligne et ne voit que certaines colonnes
Avec Toad, je peux très bien mettre à jour ma vue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 SQL> create view v as select ENAME, DNAME, JOB, EXTRACT(YEAR FROM HIREDATE) HIREDATE from EMP natural join DEPT where ename=user with check option; View created. SQL> grant select on v to blake; Grant succeeded. SQL> grant update (job) on v to blake; Grant succeeded. SQL> conn BLAKE/PAPER SQL> select * from scott.v; ENAME DNAME JOB HIREDATE ---------- -------------- --------- ---------- BLAKE SALES MANAGER 1981 SQL> update scott.v set job='PRESIDENT'; 1 row updated. SQL> roll Rollback complete.
Cependant, comme mentionné par orafrance, de nombreuses conditions rendent la vue inéditable.
c'est sûr mais le FGA me semble plus approprié et plus propre qu'une vue pour ça, non ?
Partager