33
7 7 Verändern von Daten

7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

Embed Size (px)

Citation preview

Page 1: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

77

Verändern von DatenVerändern von Daten

Page 2: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-2

ZieleZiele

• Beschreibe jeden DML Befehl

• Einfügen von Zeilen in eine Tabelle

• Ändern von Zeilen in einer Tabelle

• Löschen von Zeilen aus einer Tabelle

• Transaktionskontrolle

• Beschreibe jeden DML Befehl

• Einfügen von Zeilen in eine Tabelle

• Ändern von Zeilen in einer Tabelle

• Löschen von Zeilen aus einer Tabelle

• Transaktionskontrolle

Page 3: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-3

Data Manipulation LanguageData Manipulation Language

• Ein DML Statement wird ausgeführt bei:

– Hinzufügen neuer Zeilen zu einer Tabelle

– Modifikation von existierenden Zeilen in einer Tabelle

– Löschen von Zeilen aus einer Tabelle

• Eine Transaktion besteht aus einer Folge von DML-Statements, die eine logische Einheit (Unit of Work) bilden.

• Ein DML Statement wird ausgeführt bei:

– Hinzufügen neuer Zeilen zu einer Tabelle

– Modifikation von existierenden Zeilen in einer Tabelle

– Löschen von Zeilen aus einer Tabelle

• Eine Transaktion besteht aus einer Folge von DML-Statements, die eine logische Einheit (Unit of Work) bilden.

Page 4: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-4

Hinzufügen einer neuen Zeile zu einer Tabelle (Insert)

Hinzufügen einer neuen Zeile zu einer Tabelle (Insert)

DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

Neue ZeileNeue Zeile

50 DEVELOPMENT DETROIT

DEPT DEPT DEPTNO DNAME LOC ------ ---------- -------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON

“…“…Einfügen neue Zeile Einfügen neue Zeile in die DEPT Tabelle…”in die DEPT Tabelle…”

50 DEVELOPMENT DETROIT

Page 5: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-5

Der INSERT BefehlDer INSERT Befehl

• Hinzufügen neuer Zeilen zu einer Tabelle mit Hilfe des INSERT Statement.

• Nur eine Zeile wird gleichzeitig eingefügt bei dieser Syntax.

• Hinzufügen neuer Zeilen zu einer Tabelle mit Hilfe des INSERT Statement.

• Nur eine Zeile wird gleichzeitig eingefügt bei dieser Syntax.

INSERT INTO table [(column [, column...])]VALUES (value [, value...]);

INSERT INTO table [(column [, column...])]VALUES (value [, value...]);

Page 6: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-6

Einfügen neuer ZeilenEinfügen neuer Zeilen

• Einfügen einer neuen Zeile, die für jede Spalte Werte enthält.

• Gebe die Werte standardmäßig in der Reihenfolge der Spalten der Tabelle an.

• Optional: Angabe der Spalten in der INSERT-Klausel.

• Zeichen- und Datumsfelder in einfache Hochkommas einschließen.

• Einfügen einer neuen Zeile, die für jede Spalte Werte enthält.

• Gebe die Werte standardmäßig in der Reihenfolge der Spalten der Tabelle an.

• Optional: Angabe der Spalten in der INSERT-Klausel.

• Zeichen- und Datumsfelder in einfache Hochkommas einschließen.

SQL> INSERT INTO dept (deptno, dname, loc) 2 VALUES (50, 'DEVELOPMENT', 'DETROIT');1 row created.1 row created.

Page 7: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-7

Einfügen von Zeilen mit NullwertenEinfügen von Zeilen mit Nullwerten

• Implizite Methode: Spalte aus der Spaltenliste weglassen. • Implizite Methode: Spalte aus der

Spaltenliste weglassen.

SQL> INSERT INTO dept (deptno, dname ) 2 VALUES (60, 'MIS');1 row created.1 row created.

• Explizite Methode: Schlüsselwort NULL angeben.• Explizite Methode: Schlüsselwort NULL

angeben.

SQL> INSERT INTO dept 2 VALUES (70, 'FINANCE', NULL);1 row created.1 row created.

Page 8: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-8

Einfügen spezieller WerteEinfügen spezieller Werte

SYSDATE Funktion ermittelt aktuelles SYSDATE Funktion ermittelt aktuelles Datum und Uhrzeit.Datum und Uhrzeit.SYSDATE Funktion ermittelt aktuelles SYSDATE Funktion ermittelt aktuelles Datum und Uhrzeit.Datum und Uhrzeit.

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.

Page 9: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-9

Kopieren von Datensätzen aus einer anderen Tabelle

Kopieren von Datensätzen aus einer anderen Tabelle

• INSERT Statement mit Subquery verbinden.

• VALUES-Klausel nicht verwenden.

• Anzahl der Spalten in der INSERT Klausel muß mit der in der Subquery übereinstimmen.

• INSERT Statement mit Subquery verbinden.

• VALUES-Klausel nicht verwenden.

• Anzahl der Spalten in der INSERT Klausel muß mit der in der Subquery übereinstimmen.

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.

Page 10: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-10

Ändern von Daten in einer TabelleÄndern von Daten in einer TabelleEMPEMP

“…“…ändere eine Zeile ändere eine Zeile in EMP Tabelle…”in EMP Tabelle…”

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 ...

Page 11: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-11

Der UPDATE BefehlDer UPDATE Befehl

• Modifiziere existierende Zeilen mit dem UPDATE Statement.

• Ändere mehr als eine Zeile wenn erforderlich.

• Modifiziere existierende Zeilen mit dem UPDATE Statement.

• Ändere mehr als eine Zeile wenn erforderlich.

UPDATE tableSET column = value [, column = value, ...][WHERE condition];

UPDATE tableSET column = value [, column = value, ...][WHERE condition];

Page 12: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-12

Ändern von Zeilen in einer TabelleÄndern von Zeilen in einer Tabelle

• Eine oder mehrere Zeilen werden modi-fiziert, wenn eine WHERE Klausel besteht.

• Alle Zeilen der Tabelle werden modifiziert wenn WHERE Klausel weggelassen wird.

• Eine oder mehrere Zeilen werden modi-fiziert, wenn eine WHERE Klausel besteht.

• Alle Zeilen der Tabelle werden modifiziert wenn WHERE Klausel weggelassen wird.

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.

Page 13: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-13

Ändern mit Hilfe einer Multiple-Column Subquery

Ändern mit Hilfe einer Multiple-Column Subquery

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.

Ändere Job und Abteilung (Deptno) des Ändere Job und Abteilung (Deptno) des Angestellten 7698, so daß diese mit dem Angestellten 7698, so daß diese mit dem Angestellten 7499 übereinstimmen.Angestellten 7499 übereinstimmen.

Ändere Job und Abteilung (Deptno) des Ändere Job und Abteilung (Deptno) des Angestellten 7698, so daß diese mit dem Angestellten 7698, so daß diese mit dem Angestellten 7499 übereinstimmen.Angestellten 7499 übereinstimmen.

Page 14: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-14

Ändern von Zeilen basierend auf einer anderen Tabelle

Ändern von Zeilen basierend auf einer anderen Tabelle

Verwende Subqueries in UPDATE Befehlen, Verwende Subqueries in UPDATE Befehlen, um Zeilen in einer Tabelle zu ändern, um Zeilen in einer Tabelle zu ändern, basierend auf Werten einer anderen Tabelle. basierend auf Werten einer anderen Tabelle.

Verwende Subqueries in UPDATE Befehlen, Verwende Subqueries in UPDATE Befehlen, um Zeilen in einer Tabelle zu ändern, um Zeilen in einer Tabelle zu ändern, basierend auf Werten einer anderen Tabelle. basierend auf Werten einer anderen Tabelle.

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.

Page 15: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-15

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;

Ändern von Zeilen: Integrity Constraint Error

Ändern von Zeilen: Integrity Constraint Error

Department n

umber 55 does not e

xist

Department n

umber 55 does not e

xist

Department n

umber 55 does not e

xist

Department n

umber 55 does not e

xist

Page 16: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-16

“…“…lösche einer Zeile lösche einer Zeile aus der DEPT Tabelle …”aus der DEPT Tabelle …”

Löschen einer Zeile aus einer Tabelle

Löschen einer Zeile aus einer Tabelle 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 ...

Page 17: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-17

Der DELETE BefehlDer DELETE Befehl

Existierende Zeilen können mit Hilfe des Existierende Zeilen können mit Hilfe des DELETE Befehls gelöscht werden.DELETE Befehls gelöscht werden.Existierende Zeilen können mit Hilfe des Existierende Zeilen können mit Hilfe des DELETE Befehls gelöscht werden.DELETE Befehls gelöscht werden.

DELETE [FROM] table[WHERE condition];

DELETE [FROM] table[WHERE condition];

Page 18: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-18

• Einzelne Zeilen werden gelöscht, wenn WHERE Klausel angegeben wird.

• Alle Zeilen einer Tabelle werden gelöscht, wenn WHERE Klausel weggelassen wird.

• Einzelne Zeilen werden gelöscht, wenn WHERE Klausel angegeben wird.

• Alle Zeilen einer Tabelle werden gelöscht, wenn WHERE Klausel weggelassen wird.

Löschen von Zeilen aus einer Tabelle

Löschen von Zeilen aus einer Tabelle

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.

Page 19: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-19

Löschen von Zeilen basierend auf einer anderen Tabelle

Löschen von Zeilen basierend auf einer anderen Tabelle

Nutze Subqueries in DELETE Befehlen, Nutze Subqueries in DELETE Befehlen, um Zeilen aus einer Tabelle zu löschen, um Zeilen aus einer Tabelle zu löschen, basierend auf Werten aus einer anderen basierend auf Werten aus einer anderen Tabelle.Tabelle.

Nutze Subqueries in DELETE Befehlen, Nutze Subqueries in DELETE Befehlen, um Zeilen aus einer Tabelle zu löschen, um Zeilen aus einer Tabelle zu löschen, basierend auf Werten aus einer anderen basierend auf Werten aus einer anderen Tabelle.Tabelle.

SQL> DELETE FROM employee 2 WHERE deptno = 3 (SELECT deptno 4 FROM dept 5 WHERE dname ='SALES');6 rows deleted.6 rows deleted.

Page 20: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-20

Löschen von Zeilen: Integrity Constraint Error

Löschen von Zeilen: Integrity Constraint Error

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

You cannot delete a row

You cannot delete a row

that contains a primary key

that contains a primary key

that is used as a foreign key

that is used as a foreign key

in another table.

in another table.You cannot delete a row

You cannot delete a row

that contains a primary key

that contains a primary key

that is used as a foreign key

that is used as a foreign key

in another table.

in another table.

Page 21: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-21

Datenbank-TransaktionenDatenbank-Transaktionen

Besteht aus einem der folgenden Befehle: Besteht aus einem der folgenden Befehle:

• DML Befehle, die eine konsistente Datenänderung bilden

• Ein DDL Befehl

• Ein DCL Befehl

Besteht aus einem der folgenden Befehle: Besteht aus einem der folgenden Befehle:

• DML Befehle, die eine konsistente Datenänderung bilden

• Ein DDL Befehl

• Ein DCL Befehl

Page 22: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-22

Datenbank-TransaktionenDatenbank-Transaktionen

• Beginn bei der Ausführung des ersten ausführbaren SQL-Befehls.

• Endet mit einem der folgenden Ereignisse:

– COMMIT oder ROLLBACK abgesetzt

– DDL oder DCL Befehl (automatisches Commit)

– Benutzer verläßt System

– Systemzusammenbruch

• Beginn bei der Ausführung des ersten ausführbaren SQL-Befehls.

• Endet mit einem der folgenden Ereignisse:

– COMMIT oder ROLLBACK abgesetzt

– DDL oder DCL Befehl (automatisches Commit)

– Benutzer verläßt System

– Systemzusammenbruch

Page 23: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-23

Vorteile von COMMIT und ROLLBACK Befehlen

Vorteile von COMMIT und ROLLBACK Befehlen

• Sichern Datenkonsistenz

• Offene Änderungen werden dauerhaft gemacht oder zurückgesetzt

• Gruppieren logisch zusammen-hängende Operationen

• Sichern Datenkonsistenz

• Offene Änderungen werden dauerhaft gemacht oder zurückgesetzt

• Gruppieren logisch zusammen-hängende Operationen

Page 24: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-24

DELETEDELETE

Kontrolle von TransaktionenKontrolle von Transaktionen

TransaktionTransaktionTransaktionTransaktion

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

Page 25: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-25

Zustand der Daten vor dem COMMIT oder ROLLBACK

Zustand der Daten vor dem COMMIT oder ROLLBACK

• Der vorherige Zustand kann wieder-hergestellt werden.

• Die Ergebnisse der DML-Operationen inner-halb der Transaktion können mittels SELECT ausgewertet werden.

• Andere Benutzer können nicht die Ergebnisse der DML-Befehle des aktuellen Benutzers sehen.

• Die betroffenen Zeilen sind gesperrt (locked); somit können keine anderen Benutzer Daten innerhalb dieser Sätze ändern.

• Der vorherige Zustand kann wieder-hergestellt werden.

• Die Ergebnisse der DML-Operationen inner-halb der Transaktion können mittels SELECT ausgewertet werden.

• Andere Benutzer können nicht die Ergebnisse der DML-Befehle des aktuellen Benutzers sehen.

• Die betroffenen Zeilen sind gesperrt (locked); somit können keine anderen Benutzer Daten innerhalb dieser Sätze ändern.

Page 26: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-26

Zustand der Daten nach COMMITZustand der Daten nach COMMIT

• Datenänderungen werden dauerhaft in der Datenbank.

• Der vorherige Zustand der Daten geht dauerhaft verloren.

• Alle Benutzer können die Ergebnisse sehen.

• Sperren auf den betroffenen Sätzen werden freigegeben; diese werden somit verfügbar für andere Benutzer.

• Datenänderungen werden dauerhaft in der Datenbank.

• Der vorherige Zustand der Daten geht dauerhaft verloren.

• Alle Benutzer können die Ergebnisse sehen.

• Sperren auf den betroffenen Sätzen werden freigegeben; diese werden somit verfügbar für andere Benutzer.

Page 27: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-27

Ausführung eines Commits auf Daten

Ausführung eines Commits auf Daten

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.

• Ausführung der Änderung.• Ausführung der Änderung.

• Commit der Änderung (Bestätigung).• Commit der Änderung (Bestätigung).SQL> COMMIT;Commit complete.Commit complete.

Page 28: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-28

Zustand der Daten nach ROLLBACKZustand der Daten nach ROLLBACK

Verwerfen aller offenen Änderung durch Verwerfen aller offenen Änderung durch Nutzung des ROLLBACK Befehls. Nutzung des ROLLBACK Befehls.

• Datenänderungen rückgängig machen.

• Vorherigen Zustand rekonstruieren.

• Sperren auf betroffenen Sätzen freigeben.

Verwerfen aller offenen Änderung durch Verwerfen aller offenen Änderung durch Nutzung des ROLLBACK Befehls. Nutzung des ROLLBACK Befehls.

• Datenänderungen rückgängig machen.

• Vorherigen Zustand rekonstruieren.

• Sperren auf betroffenen Sätzen freigeben.

SQL> DELETE FROM employee;14 rows deleted.14 rows deleted.SQL> ROLLBACK;Rollback complete.Rollback complete.

Page 29: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-29

LesekonsistenzLesekonsistenz

• Lesekonsistenz garantiert eine kon-sistente Sicht auf die Daten zu jeder Zeit.

• Änderungen eines Benutzer stehen nicht in Konflikt mit Änderungen durch andere Benutzer.

• Lesekonsistenz sichert auf den gleichen Daten:

– Leser warten nicht auf Schreiber

– Schreiben warten nicht auf Leser

• Lesekonsistenz garantiert eine kon-sistente Sicht auf die Daten zu jeder Zeit.

• Änderungen eines Benutzer stehen nicht in Konflikt mit Änderungen durch andere Benutzer.

• Lesekonsistenz sichert auf den gleichen Daten:

– Leser warten nicht auf Schreiber

– Schreiben warten nicht auf Leser

Page 30: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-30

Implementierung der LesekonsistenzImplementierung der Lesekonsistenz

UPDATE empUPDATE empSET sal = 2000SET sal = 2000WHERE ename = WHERE ename = 'SCOTT';'SCOTT';

Daten-Daten-blöckeblöcke

RollbackRollbackSegmenteSegmente

veränderteveränderteund und unveränderte unveränderte DatenDaten

““alte” Daten alte” Daten vor der vor der ÄnderungÄnderung

Benutzer ABenutzer A

Benutzer BBenutzer B

ReadReadconsistentconsistentimageimage

SELECT *SELECT *FROMFROM emp;emp;

Page 31: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-31

Sperren (Locking)Sperren (Locking)

Oracle sperrt:Oracle sperrt:

• Verhinderung von gegenseitigen Behinderungen gleichen Daten durch konkurrierende Transaktionen

• Erfordert keine Benutzeraktion

• Sperren werden während der Dauer der Transaktion gehalten

• Zwei Basismodi: – Exclusive– Share

Oracle sperrt:Oracle sperrt:

• Verhinderung von gegenseitigen Behinderungen gleichen Daten durch konkurrierende Transaktionen

• Erfordert keine Benutzeraktion

• Sperren werden während der Dauer der Transaktion gehalten

• Zwei Basismodi: – Exclusive– Share

Page 32: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-32

ZusammenfassungZusammenfassung

Description

Fügt eine neue Zeile in die Tabelle ein

Modifiziert existierende Zeilen in der Tabelle

Löscht existierende Zeilen aus der Tabelle

Macht alle offenen Änderungen dauerhaft

Erlaubt ein Rollback bis zu Sicherungspunkt.

Verwerfen aller offenen Datenänderungen

Statement

INSERT

UPDATE

DELETE

COMMIT

SAVEPOINT

ROLLBACK

Page 33: 7 Verändern von Daten. 9-2 Ziele Beschreibe jeden DML Befehl Einfügen von Zeilen in eine Tabelle Ändern von Zeilen in einer Tabelle Löschen von Zeilen

9-33

ÜbungenÜbungen

• Einfügen neuer Datensätze in Tabellen• Ändern und Löschen von Datensätzen in der Tabelle• Transaktionskontrolle

• Einfügen neuer Datensätze in Tabellen• Ändern und Löschen von Datensätzen in der Tabelle• Transaktionskontrolle