SQL DML - Insert Update Delete
SQL DML - Insert Update Delete
BESE 12
OBJECTIVES
4 rows created.
UPDATE table
SET column = value [, column = value, ...]
[WHERE condition];
15
UPDATING TWO COLUMNS WITH A SUBQUERY
17
UPDATING ROWS BASED
ON ANOTHER TABLE
UPDATE employees
SET department_id = 55
WHERE department_id = 110;
UPDATE employees
*
ERROR at line 1:
ORA-02291: integrity constraint (HR.EMP_DEPT_FK)
violated - parent key not found
REMOVING A ROW FROM A TABLE
DEPARTMENTS
All rows in the table are deleted if you omit the WHERE
clause.
With the explicit default feature, you can use the DEFAULT
keyword as a column value where the column default is
desired.
The addition of this feature is for compliance with the SQL:
1999 Standard.
This allows the user to control where and when the default
value should be applied to data.
Explicit defaults can be used in INSERT and UPDATE
statements.
USING EXPLICIT DEFAULT VALUES
UPDATE departments
SET manager_id = DEFAULT WHERE department_id = 10;
THE MERGE STATEMENT
SELECT *
FROM COPY_EMP;
no rows selected
MERGE INTO copy_emp c
USING employees e
ON (c.employee_id = e.employee_id)
WHEN MATCHED THEN
UPDATE SET
...
WHEN NOT MATCHED THEN
INSERT VALUES...;
SELECT *
FROM COPY_EMP;
20 rows selected.
DATABASE TRANSACTIONS
DELETE
SAVEPOINT A
INSERT
UPDATE
SAVEPOINT B
INSERT
ROLLBACK ROLLBACK ROLLBACK
to SAVEPOINT B to SAVEPOINT A
ROLLING BACK CHANGES
TO A MARKER
UPDATE...
SAVEPOINT update_done;
Savepoint created.
INSERT...
ROLLBACK TO update_done;
Rollback complete.
IMPLICIT TRANSACTION PROCESSING
User A
UPDATE employees Data
SET salary = 7000 blocks
WHERE last_name = 'Goyal';
Rollback
segments
changed
SELECT * and unchanged
FROM userA.employees; Read data
consistent
image before
change
“old” data
User B
LOCKING
In a database, locks:
Prevent destructive interaction between concurrent
transactions
Require no user action