Manipulation des Données , cours sql oracle
description
Transcript of Manipulation des Données , cours sql oracle
Copyright Oracle Corporation, 1998. Tous droits réservés.
1212
Manipulation des DonnéesManipulation des Données
www.TelechargerCours.com
12-2 Copyright Oracle Corporation, 1998. Tous droits réservés.
ObjectifsObjectifs
A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez :
• Décrire chaque ordre du LMD
• Insérer des lignes dans une table
• Mettre à jour des lignes dans une table
• Supprimer des lignes d'une table
• Contrôler les transactions
A la fin de ce chapitre, vous saurez :A la fin de ce chapitre, vous saurez :
• Décrire chaque ordre du LMD
• Insérer des lignes dans une table
• Mettre à jour des lignes dans une table
• Supprimer des lignes d'une table
• Contrôler les transactions
www.TelechargerCours.com
12-3 Copyright Oracle Corporation, 1998. Tous droits réservés.
Langage de Manipulation des Données
Langage de Manipulation des Données
• Un ordre du LMD est exécuté lorsque :
– Vous ajoutez des lignes à une table
– Vous modifiez des lignes existantes dans une table
– Vous supprimez des lignes d'une table
• Une transaction est un ensemble d'ordres du LMD formant une unité de travail logique.
• Un ordre du LMD est exécuté lorsque :
– Vous ajoutez des lignes à une table
– Vous modifiez des lignes existantes dans une table
– Vous supprimez des lignes d'une table
• Une transaction est un ensemble d'ordres du LMD formant une unité de travail logique.
www.TelechargerCours.com
12-4 Copyright Oracle Corporation, 1998. Tous droits réservés.
Ajout d'une Nouvelle Ligne dans une Table
Ajout d'une Nouvelle Ligne dans une Table
DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
Nouvelle ligneNouvelle ligne
50 DEVELOPMENT DETROIT
DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
"…insérer une "…insérer une nouvelle ligne dans la nouvelle ligne dans la
table DEPT …"table DEPT …"
50 DEVELOPMENT DETROIT
12-5 Copyright Oracle Corporation, 1998. Tous droits réservés.
L'Ordre INSERTL'Ordre INSERT
• L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table.
• Cette syntaxe n'insère qu'une seule ligne à la fois.
• L'ordre INSERT permet d'ajouter de nouvelles lignes dans une table.
• Cette syntaxe n'insère qu'une seule ligne à la fois.
INSERT INTO table [(column [, column...])]VALUES (value [, value...]);
INSERT INTO table [(column [, column...])]VALUES (value [, value...]);
www.TelechargerCours.com
12-6 Copyright Oracle Corporation, 1998. Tous droits réservés.
Insertion de Nouvelles LignesInsertion de Nouvelles Lignes
• Insérez une nouvelle ligne en précisant une valeur pour chaque colonne.
• Eventuellement, énumérez les colonnes dans la clause INSERT.
• Indiquez les valeurs dans l'ordre par défaut des colonnes dans la table.
• Placez les valeurs de type caractère et date entre simples quotes.
• Insérez une nouvelle ligne en précisant une valeur pour chaque colonne.
• Eventuellement, énumérez les colonnes dans la clause INSERT.
• Indiquez les valeurs dans l'ordre par défaut des colonnes dans la table.
• Placez les valeurs de type caractère et date entre simples quotes.
SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (50, 'DEVELOPMENT', 'DETROIT');1 row created.1 row created.
www.TelechargerCours.com
12-7 Copyright Oracle Corporation, 1998. Tous droits réservés.
Insertion de Lignes Contenant des Valeurs NULL
Insertion de Lignes Contenant des Valeurs NULL
• Méthode implicite : ne spécifiez pas la colonne dans la liste.
• Méthode implicite : ne spécifiez pas la colonne dans la liste.
SQL> INSERT INTO dept (deptno, dname ) 2 VALUES (60, 'MIS');1 row created.1 row created.
• Méthode explicite : spécifiez le mot-clé NULL.
• Méthode explicite : spécifiez le mot-clé NULL.
SQL> INSERT INTO dept 2 VALUES (70, 'FINANCE', NULL);1 row created.1 row created.
12-8 Copyright Oracle Corporation, 1998. Tous droits réservés.
Insertion de Valeurs SpécialesInsertion de Valeurs Spéciales
La fonction SYSDATE renvoie la date et La fonction SYSDATE renvoie la date et l'heure courantes.l'heure courantes.La fonction SYSDATE renvoie la date et La fonction SYSDATE renvoie la date et l'heure courantes.l'heure courantes.
SQL> INSERT INTO emp (empno, ename, job, 2 mgr, hiredate, sal, comm, 3 deptno) 4 VALUES (7196, 'GREEN', 'SALESMAN', 5 7782, SYSDATE, 2000, NULL, 6 10);1 row created.1 row created.
12-9 Copyright Oracle Corporation, 1998. Tous droits réservés.
Insertion de Dates dans un Format Spécifique
Insertion de Dates dans un Format Spécifique
• Ajout d'un nouvel employé.• Ajout d'un nouvel employé.SQL> INSERT INTO emp 2 VALUES (2296,'AROMANO','SALESMAN',7782, 3 TO_DATE('FEB 3,97', 'MON DD,YY'), 4 1300, NULL, 10);1 row created.1 row created.
• Vérification de l'ajout.• Vérification de l'ajout.EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO----- ------- -------- ---- --------- ---- ----- ----- 2296 AROMANO SALESMAN 7782 03-FEB-97 1300 10
12-10 Copyright Oracle Corporation, 1998. Tous droits réservés.
Insertion de Valeurs au Moyen de Variables de Substitution
Insertion de Valeurs au Moyen de Variables de Substitution
Création d'un script interactif au moyen Création d'un script interactif au moyen de paramètres de substitution SQL*Plus.de paramètres de substitution SQL*Plus.Création d'un script interactif au moyen Création d'un script interactif au moyen de paramètres de substitution SQL*Plus.de paramètres de substitution SQL*Plus.
SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (&department_id, 3 '&department_name', '&location');
Enter value for department_id: 8080Enter value for department_name: EDUCATIONEDUCATIONEnter value for location: ATLANTAATLANTA
1 row created.
12-11 Copyright Oracle Corporation, 1998. Tous droits réservés.
Création d'un Script Contenant des Messages Personnalisés
Création d'un Script Contenant des Messages Personnalisés
• ACCEPT stocke la valeur dans une variable.
• PROMPT affiche votre texte.
• ACCEPT stocke la valeur dans une variable.
• PROMPT affiche votre texte.
ACCEPT department_id PROMPT 'Please enter the -
department number:'
ACCEPT department_name PROMPT 'Please enter -
the department name:'
ACCEPT location PROMPT 'Please enter the -
location:'
INSERT INTO dept (deptno, dname, loc)
VALUES (&department_id, '&department_name',
‘&location’);
12-12 Copyright Oracle Corporation, 1998. Tous droits réservés.
Copie de Lignes d'une Autre TableCopie de Lignes d'une Autre Table
• Ecrivez votre ordre INSERT en spécifiant une sous-interrogation.
• N'utilisez pas la clause VALUES.• Le nombre de colonnes de la clause
INSERT doit correspondre à celui de la sous-interrogation.
• Ecrivez votre ordre INSERT en spécifiant une sous-interrogation.
• N'utilisez pas la clause VALUES.• Le nombre de colonnes de la clause
INSERT doit correspondre à celui de la sous-interrogation.
SQL> INSERT INTO managers(id, name, salary, hiredate) 2 SELECT empno, ename, sal, hiredate 3 FROM emp 4 WHERE job = 'MANAGER';3 rows created.3 rows created.
www.TelechargerCours.com
12-13 Copyright Oracle Corporation, 1998. Tous droits réservés.
Modification des Données d'une Table
Modification des Données d'une Table
EMPEMP
"…modifier une "…modifier une ligne ligne
de la table EMP…"de la table EMP…"
EMPEMP
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...
20
EMPNO ENAME JOB ... DEPTNO
7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 ...
12-14 Copyright Oracle Corporation, 1998. Tous droits réservés.
L'Ordre UPDATEL'Ordre UPDATE
• Utilisez l'ordre UPDATE pour modifier des lignes existantes.
• Si nécessaire, vous pouvez modifier plusieurs lignes à la fois.
• Utilisez l'ordre UPDATE pour modifier des lignes existantes.
• Si nécessaire, vous pouvez modifier plusieurs lignes à la fois.
UPDATE tableSET column = value [, column = value][WHERE condition];
UPDATE tableSET column = value [, column = value][WHERE condition];
www.TelechargerCours.com
12-15 Copyright Oracle Corporation, 1998. Tous droits réservés.
Modification de Lignes d'une Table
Modification de Lignes d'une Table
• La clause WHERE permet de modifier une ou plusieurs lignes spécifiques.
• Si vous omettez la clause WHERE, toutes les lignes sont modifiées.
• La clause WHERE permet de modifier une ou plusieurs lignes spécifiques.
• Si vous omettez la clause WHERE, toutes les lignes sont modifiées.
SQL> UPDATE emp 2 SET deptno = 20 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.
SQL> UPDATE employee 2 SET deptno = 20;14 rows updated.14 rows updated.
12-16 Copyright Oracle Corporation, 1998. Tous droits réservés.
Modification avec une Sous-Interrogation Multi-colonne
Modification avec une Sous-Interrogation Multi-colonne
SQL> UPDATE emp 2 SET (job, deptno) = 3 (SELECT job, deptno 4 FROM emp 5 WHERE empno = 7499) 6 WHERE empno = 7698;1 row updated.1 row updated.
Modifier le poste et le n° de département de Modifier le poste et le n° de département de l'employé 7698 à l'identique de l'employé l'employé 7698 à l'identique de l'employé 7499.7499.
Modifier le poste et le n° de département de Modifier le poste et le n° de département de l'employé 7698 à l'identique de l'employé l'employé 7698 à l'identique de l'employé 7499.7499.
12-17 Copyright Oracle Corporation, 1998. Tous droits réservés.
Modification de Lignes en Fonction d'une Autre TableModification de Lignes en
Fonction d'une Autre Table
Utilisez des sous-interrogations dans l'ordre Utilisez des sous-interrogations dans l'ordre UPDATE pour modifier des lignes d'une table UPDATE pour modifier des lignes d'une table à l'aide de valeurs d'une autre table.à l'aide de valeurs d'une autre table.
Utilisez des sous-interrogations dans l'ordre Utilisez des sous-interrogations dans l'ordre UPDATE pour modifier des lignes d'une table UPDATE pour modifier des lignes d'une table à l'aide de valeurs d'une autre table.à l'aide de valeurs d'une autre table.
SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7788) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7788);2 rows updated.2 rows updated.
SQL> UPDATE employee 2 SET deptno = (SELECT deptno 3 FROM emp 4 WHERE empno = 7788) 5 WHERE job = (SELECT job 6 FROM emp 7 WHERE empno = 7788);2 rows updated.2 rows updated.
12-18 Copyright Oracle Corporation, 1998. Tous droits réservés.
Ordre UPDATE SynchroniséOrdre UPDATE Synchronisé
SyntaxeSyntaxe
Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour mettre à jour les lignes Synchronisée pour mettre à jour les lignes d'une table basée sur des lignes d'une d'une table basée sur des lignes d'une autre table.autre table.
SyntaxeSyntaxe
Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour mettre à jour les lignes Synchronisée pour mettre à jour les lignes d'une table basée sur des lignes d'une d'une table basée sur des lignes d'une autre table.autre table.
UPDATE table1 alias1SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);
UPDATE table1 alias1SET column = (SELECT expression FROM table2 alias2 WHERE alias1.column = alias2.column);
www.TelechargerCours.com
12-19 Copyright Oracle Corporation, 1998. Tous droits réservés.
Ordre UPDATE SynchroniséExemple
Ordre UPDATE SynchroniséExemple
Ajouter une nouvelle colonne à la table Ajouter une nouvelle colonne à la table emp pour stocker le nom du département, emp pour stocker le nom du département, puis remplissez la table à l’aide d’un puis remplissez la table à l’aide d’un UPDATE Synchronisé .UPDATE Synchronisé .
Ajouter une nouvelle colonne à la table Ajouter une nouvelle colonne à la table emp pour stocker le nom du département, emp pour stocker le nom du département, puis remplissez la table à l’aide d’un puis remplissez la table à l’aide d’un UPDATE Synchronisé .UPDATE Synchronisé .
UPDATE emp eSET dname = (SELECT dname FROM dept d WHERE d.deptno = e.deptno);
UPDATE emp eSET dname = (SELECT dname FROM dept d WHERE d.deptno = e.deptno);
www.TelechargerCours.com
12-20 Copyright Oracle Corporation, 1998. Tous droits réservés.
UPDATE emp *ERROR at line 1:ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found
UPDATE emp *ERROR at line 1:ORA-02291: integrity constraint (USR.EMP_DEPTNO_FK) violated - parent key not found
SQL> UPDATE emp 2 SET deptno = 55 3 WHERE deptno = 10;
SQL> UPDATE emp 2 SET deptno = 55 3 WHERE deptno = 10;
Modification de Lignes : Erreur de Contrainte d'Intégrité
Modification de Lignes : Erreur de Contrainte d'Intégrité
Le numéro de départe
ment 55 n'existe pas
Le numéro de départe
ment 55 n'existe pas
Le numéro de départe
ment 55 n'existe pas
Le numéro de départe
ment 55 n'existe pas
www.TelechargerCours.com
12-21 Copyright Oracle Corporation, 1998. Tous droits réservés.
"…supprime une ligne "…supprime une ligne de la table DEPT…"de la table DEPT…"
Suppression d'une Ligne d'une Table Suppression d'une Ligne d'une Table
DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DEVELOPMENT DETROIT 60 MIS ...
DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 60 MIS ...
www.TelechargerCours.com
12-22 Copyright Oracle Corporation, 1998. Tous droits réservés.
L'Ordre DELETEL'Ordre DELETE
Vous pouvez supprimer des lignes d'une Vous pouvez supprimer des lignes d'une table au moyen de l'ordre DELETE.table au moyen de l'ordre DELETE.Vous pouvez supprimer des lignes d'une Vous pouvez supprimer des lignes d'une table au moyen de l'ordre DELETE.table au moyen de l'ordre DELETE.
DELETE [FROM] table[WHERE condition];
DELETE [FROM] table[WHERE condition];
www.TelechargerCours.com
12-23 Copyright Oracle Corporation, 1998. Tous droits réservés.
• La clause WHERE permet de supprimer une ou plusieurs lignes spécifiques.
• Si vous omettez la clause WHERE, toutes les lignes sont supprimées.
• La clause WHERE permet de supprimer une ou plusieurs lignes spécifiques.
• Si vous omettez la clause WHERE, toutes les lignes sont supprimées.
Suppression de Lignes d'une TableSuppression de Lignes d'une Table
SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted.1 row deleted.
SQL> DELETE FROM department 2 WHERE dname = 'DEVELOPMENT'; 1 row deleted.1 row deleted.
SQL> DELETE FROM department;4 rows deleted.4 rows deleted.
SQL> DELETE FROM department;4 rows deleted.4 rows deleted.
www.TelechargerCours.com
12-24 Copyright Oracle Corporation, 1998. Tous droits réservés.
Suppression de Lignes en Faisant Référence à une Autre Table
Suppression de Lignes en Faisant Référence à une Autre Table
Utilisez des sous-interrogations dans Utilisez des sous-interrogations dans l'ordre DELETE pour supprimer des lignes l'ordre DELETE pour supprimer des lignes dont certaines valeurs correspondent à dont certaines valeurs correspondent à celles d'une autre table.celles d'une autre table.
Utilisez des sous-interrogations dans Utilisez des sous-interrogations dans l'ordre DELETE pour supprimer des lignes l'ordre DELETE pour supprimer des lignes dont certaines valeurs correspondent à dont certaines valeurs correspondent à celles d'une autre table.celles d'une autre table.
SQL> DELETE FROM employee 2 WHERE deptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES');6 rows deleted.6 rows deleted.
www.TelechargerCours.com
12-25 Copyright Oracle Corporation, 1998. Tous droits réservés.
SQL> DELETE FROM table1 alias1 2 WHERE column operator 3 (SELECT expression 3 FROM table2 alias2 4 WHERE alias1.column = alias2.column);
SQL> DELETE FROM table1 alias1 2 WHERE column operator 3 (SELECT expression 3 FROM table2 alias2 4 WHERE alias1.column = alias2.column);
SyntaxeSyntaxe
Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour supprimer Synchronisée pour supprimer uniquement les lignes existant également uniquement les lignes existant également dans une autre table.dans une autre table.
SyntaxeSyntaxe
Utilisez une Sous-Interrogation Utilisez une Sous-Interrogation Synchronisée pour supprimer Synchronisée pour supprimer uniquement les lignes existant également uniquement les lignes existant également dans une autre table.dans une autre table.
Ordre DELETE SynchroniséOrdre DELETE Synchroniséwww.TelechargerCours.com
12-26 Copyright Oracle Corporation, 1998. Tous droits réservés.
Ordre DELETE SynchroniséExemple
Ordre DELETE SynchroniséExemple
SQL> DELETE FROM emp_history eh WHERE empid = (SELECT empno FROM emp e WHERE e.empno = eh.empid);
SQL> DELETE FROM emp_history eh WHERE empid = (SELECT empno FROM emp e WHERE e.empno = eh.empid);
Supprimer les employés de la table Supprimer les employés de la table emp_history qui appartiennent aussi à la emp_history qui appartiennent aussi à la table emp .table emp .
Supprimer les employés de la table Supprimer les employés de la table emp_history qui appartiennent aussi à la emp_history qui appartiennent aussi à la table emp .table emp .
www.TelechargerCours.com
12-27 Copyright Oracle Corporation, 1998. Tous droits réservés.
Suppression de Lignes : Erreur de Contrainte d'Intégrité
Suppression de Lignes : Erreur de Contrainte d'Intégrité
SQL> DELETE FROM dept 2 WHERE deptno = 10;
SQL> DELETE FROM dept 2 WHERE deptno = 10;
DELETE FROM dept *ERROR at line 1:ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found
DELETE FROM dept *ERROR at line 1:ORA-02292: integrity constraint (USR.EMP_DEPTNO_FK) violated - child record found
Vous ne pouvez pas supprim
er une lig
ne qui
Vous ne pouvez pas supprim
er une lig
ne qui
contient u
ne clé primaire
utilisée comme clé
contient u
ne clé primaire
utilisée comme clé
étrangère dans une autre
table.
étrangère dans une autre
table.
Vous ne pouvez pas supprim
er une lig
ne qui
Vous ne pouvez pas supprim
er une lig
ne qui
contient u
ne clé primaire
utilisée comme clé
contient u
ne clé primaire
utilisée comme clé
étrangère dans une autre
table.
étrangère dans une autre
table.
12-28 Copyright Oracle Corporation, 1998. Tous droits réservés.
Transactions de Base de DonnéesTransactions de Base de Données
Une transaction se compose des éléments Une transaction se compose des éléments suivants :suivants :
• Ensemble d'ordres du LMD effectuant une modification cohérente des données
• Un ordre du LDD
• Un ordre du LCD
Une transaction se compose des éléments Une transaction se compose des éléments suivants :suivants :
• Ensemble d'ordres du LMD effectuant une modification cohérente des données
• Un ordre du LDD
• Un ordre du LCD
www.TelechargerCours.com
12-29 Copyright Oracle Corporation, 1998. Tous droits réservés.
Transactions de Base de DonnéesTransactions de Base de Données
Une transaction :
• Commence à l'exécution du premier ordre SQL
• Se termine par l'un des événements suivants :– COMMIT ou ROLLBACK– Exécution d'un ordre LDD ou LCD
(validation automatique)
– Fin de session utilisateur
– Panne du système
Une transaction :
• Commence à l'exécution du premier ordre SQL
• Se termine par l'un des événements suivants :– COMMIT ou ROLLBACK– Exécution d'un ordre LDD ou LCD
(validation automatique)
– Fin de session utilisateur
– Panne du système
www.TelechargerCours.com
12-30 Copyright Oracle Corporation, 1998. Tous droits réservés.
Avantages des Ordres COMMIT et ROLLBACKAvantages des Ordres
COMMIT et ROLLBACK
• Garantit la cohérence des données
• Possibilité d'afficher le résultat des modifications avant qu'elles ne soient définitives
• Regroupement logique d'opérations
• Garantit la cohérence des données
• Possibilité d'afficher le résultat des modifications avant qu'elles ne soient définitives
• Regroupement logique d'opérations
www.TelechargerCours.com
12-31 Copyright Oracle Corporation, 1998. Tous droits réservés.
Contrôle des TransactionsContrôle des Transactions
DELETEDELETE
TransactionTransactionTransactionTransaction
Savepoint ASavepoint A
ROLLBACK to Savepoint BROLLBACK to Savepoint B
DELETEDELETE
Savepoint BSavepoint BCOMMITCOMMIT
INSERTINSERTUPDATEUPDATE
ROLLBACK to Savepoint AROLLBACK to Savepoint A
INSERTINSERTUPDATEUPDATEINSERTINSERT
ROLLBACKROLLBACK
INSERTINSERT
www.TelechargerCours.com
12-32 Copyright Oracle Corporation, 1998. Tous droits réservés.
• Une validation automatique a lieu dans les situations suivantes :– Exécution d'un ordre du LDD– Exécution d'un ordre du LCD– Sortie normale de SQL*Plus, sans
ordre COMMIT ou ROLLBACK explicite
• Il se produit un rollback automatique en cas de sortie anormale de SQL*Plus ou d'une panne du système
• Une validation automatique a lieu dans les situations suivantes :– Exécution d'un ordre du LDD– Exécution d'un ordre du LCD– Sortie normale de SQL*Plus, sans
ordre COMMIT ou ROLLBACK explicite
• Il se produit un rollback automatique en cas de sortie anormale de SQL*Plus ou d'une panne du système
Traitement Implicite des TransactionsTraitement Implicite des Transactionswww.TelechargerCours.com
12-33 Copyright Oracle Corporation, 1998. Tous droits réservés.
Etat des Données Avant COMMIT ou ROLLBACKEtat des Données Avant COMMIT ou ROLLBACK
• Il est possible de restaurer l'état précédent des données.
• L'utilisateur courant peut afficher le résultat des opérations du LMD au moyen de l'ordre SELECT.
• Les résultats des ordres du LMD exécutés par l'utilisateur courant ne peuvent pas être affichés par d'autres utilisateurs.
• Les lignes concernées sont verrouillées. Aucun autre utilisateur ne peut les modifier.
• Il est possible de restaurer l'état précédent des données.
• L'utilisateur courant peut afficher le résultat des opérations du LMD au moyen de l'ordre SELECT.
• Les résultats des ordres du LMD exécutés par l'utilisateur courant ne peuvent pas être affichés par d'autres utilisateurs.
• Les lignes concernées sont verrouillées. Aucun autre utilisateur ne peut les modifier.
www.TelechargerCours.com
12-34 Copyright Oracle Corporation, 1998. Tous droits réservés.
Etat des Données Après COMMITEtat des Données Après COMMIT
• Les modifications des données dans la base sont définitives.
• L'état précédent des données est irrémédiablement perdu.
• Tous les utilisateurs peuvent voir le résultat des modifications.
• Les lignes verrouillées sont libérées et peuvent de nouveau être manipulées par d'autres utilisateurs.
• Tous les savepoints sont effacés.
• Les modifications des données dans la base sont définitives.
• L'état précédent des données est irrémédiablement perdu.
• Tous les utilisateurs peuvent voir le résultat des modifications.
• Les lignes verrouillées sont libérées et peuvent de nouveau être manipulées par d'autres utilisateurs.
• Tous les savepoints sont effacés.
www.TelechargerCours.com
12-35 Copyright Oracle Corporation, 1998. Tous droits réservés.
Validation de DonnéesValidation de Données
SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.
SQL> UPDATE emp 2 SET deptno = 10 3 WHERE empno = 7782;1 row updated.1 row updated.
• Effectuez les modifications.• Effectuez les modifications.
• Validez les modifications.• Validez les modifications.SQL> COMMIT;Commit complete.Commit complete.
www.TelechargerCours.com
12-36 Copyright Oracle Corporation, 1998. Tous droits réservés.
Etat des Données Après ROLLBACKEtat des Données Après ROLLBACKL'ordre ROLLBACK rejette toutes les L'ordre ROLLBACK rejette toutes les modifications de données en instance.modifications de données en instance.
• Les modifications sont annulées.
• L'état précédent des données est restauré.
• Les lignes verrouillées sont libérées.
L'ordre ROLLBACK rejette toutes les L'ordre ROLLBACK rejette toutes les modifications de données en instance.modifications de données en instance.
• Les modifications sont annulées.
• L'état précédent des données est restauré.
• Les lignes verrouillées sont libérées.SQL> DELETE FROM employee;14 rows deleted.14 rows deleted.SQL> ROLLBACK;Rollback complete.Rollback complete.
www.TelechargerCours.com
12-37 Copyright Oracle Corporation, 1998. Tous droits réservés.
Annulation des Modifications Jusqu'à une Etiquette
Annulation des Modifications Jusqu'à une Etiquette
• Posez une étiquette dans la transaction courante au moyen de l'ordre SAVEPOINT.
• Annulez la transaction jusqu'à cette étiquette en utilisant l'ordre ROLLBACK TO SAVEPOINT.
• Posez une étiquette dans la transaction courante au moyen de l'ordre SAVEPOINT.
• Annulez la transaction jusqu'à cette étiquette en utilisant l'ordre ROLLBACK TO SAVEPOINT.
SQL> UPDATE...SQL> SAVEPOINT update_done;Savepoint created.Savepoint created.SQL> INSERT...SQL> ROLLBACK TO update_done;Rollback complete.Rollback complete.
12-38 Copyright Oracle Corporation, 1998. Tous droits réservés.
Rollback au Niveau OrdreRollback au Niveau Ordre
• Si un seul ordre du LMD dans la transaction échoue, seul cet ordre est annulé.
• Oracle8 met en œuvre un savepoint implicite.
• Toutes les autres modifications sont conservées.
• L'utilisateur doit terminer explicitement les transactions en exécutant un ordre COMMIT ou ROLLBACK.
• Si un seul ordre du LMD dans la transaction échoue, seul cet ordre est annulé.
• Oracle8 met en œuvre un savepoint implicite.
• Toutes les autres modifications sont conservées.
• L'utilisateur doit terminer explicitement les transactions en exécutant un ordre COMMIT ou ROLLBACK.
www.TelechargerCours.com
12-39 Copyright Oracle Corporation, 1998. Tous droits réservés.
Lecture CohérenteLecture Cohérente
• La lecture cohérente garantit à tout moment une vue homogène des données.
• Les modifications effectuées par un utilisateur n'entrent pas en conflit avec celles d'un autre utilisateur.
• Sur les mêmes données, garantit que :
– la lecture ignore les écritures en cours
– l'écriture ne perturbe pas la lecture
• La lecture cohérente garantit à tout moment une vue homogène des données.
• Les modifications effectuées par un utilisateur n'entrent pas en conflit avec celles d'un autre utilisateur.
• Sur les mêmes données, garantit que :
– la lecture ignore les écritures en cours
– l'écriture ne perturbe pas la lecture
www.TelechargerCours.com
12-40 Copyright Oracle Corporation, 1998. Tous droits réservés.
Implémentation de la Lecture Cohérente
Implémentation de la Lecture Cohérente
update empupdate empset sal = 2000set sal = 2000where ename = where ename = 'SCOTT''SCOTT'
Blocs de Blocs de donnéesdonnées
Rollback Rollback segmentssegments
select *select *from empfrom emp
données données modifiéesmodifiéeset nonet nonmodifiéesmodifiées
'anciennes' 'anciennes' données données avant modif.avant modif.
Utilisateur AUtilisateur A
Utilisateur BUtilisateur B
Lit une Lit une imageimagecohérentecohérente
www.TelechargerCours.com
12-41 Copyright Oracle Corporation, 1998. Tous droits réservés.
VerrouillageVerrouillage
Les verrous Oracle8 :Les verrous Oracle8 :
• Evitent les risques de destruction des données en cas de transactions simultanées
• N'exigent aucune intervention de l'utilisateur
• S'appliquent au niveau de restriction le plus bas
• Sont actifs durant toute la transaction
• Fonctionnent en deux modes de base : – Exclusif– Partagé
Les verrous Oracle8 :Les verrous Oracle8 :
• Evitent les risques de destruction des données en cas de transactions simultanées
• N'exigent aucune intervention de l'utilisateur
• S'appliquent au niveau de restriction le plus bas
• Sont actifs durant toute la transaction
• Fonctionnent en deux modes de base : – Exclusif– Partagé
12-42 Copyright Oracle Corporation, 1998. Tous droits réservés.
RésuméRésumé
Description
Ajoute une nouvelle ligne dans une table
Modifie des lignes dans une table
Supprime des lignes d'une table
Valide toutes les modifications de données en instance
Permet un rollback partiel
Annule toutes les modifications de données en instance
Ordre
INSERT
UPDATE
DELETE
COMMIT
SAVEPOINT
ROLLBACK
www.TelechargerCours.com