Assertions Triggers

9
Assertions and triggers 1 Assertions and triggers

description

SQL

Transcript of Assertions Triggers

Page 1: Assertions Triggers

Assertions and triggers 1

Assertions and triggers

Page 2: Assertions Triggers

Assertions and triggers 2

Constraints• Attribute-based CHECK constraints

create table … ( postcode number(4) check (postcode > 0));Checked at update to the table.

• Tuple-based CHECK constraintscreate table … ( … check (gender = 'M' or name = 'Mary'));Checked at update to the table.

• Schema-level ASSERTIONS– Checked at any update to the tables in the assertion.– Not available in Oracle.

Page 3: Assertions Triggers

Assertions and triggers 3

Assertions

• Syntax– create assertion name check (condition)

• Has the ability to refer to all attributes in the database.

• Examples from Garcia-Molina– Fig. 7.6 + fig. 7.7, page 338– Example 7.14, page 339

Page 4: Assertions Triggers

Assertions and triggers 4

CHECK doesn't give guarantees, 339

• CHECK conditions are checked when the attribute / row is updates.

• Condition is not checked if other data are changed– CHECK conditions with sub-queries are not

guaranteed to hold– Examples

• Fig. 7.7, page 338• Example, page 339

Page 5: Assertions Triggers

Assertions and triggers 5

Assertions vs. triggers

• Assertions must be checked at any change to the mentioned (in the assertion declaration) relations.– That takes a lot of time!– Oracle doesn't implement assertions!!

• Triggers are executed at certain events specified by the database user– Not on every update.– That takes less time!!– Oracle implements triggers!!

Page 6: Assertions Triggers

Assertions and triggers 6

Triggers, syntax, 328• create trigger triggerName …

– Shah page 328• Event based execution

– BEFORE the event (insert / update)– AFTER the event– INSTEAD OF the event (works on views only)

Page 7: Assertions Triggers

Assertions and triggers 7

BEFORE triggers, 330

• Executed BEFORE the insert / update is executed by the DBMS– Example:

• changeNullTrigger.sql– Better solution: Default value on the column

• Shah page 330– Hides the use of sequences (Oracle feature) from the

application– Inserts the current date

– You can refer to the pseudo variable :NEW

Page 8: Assertions Triggers

Assertions and triggers 8

AFTER trigger, 331

• Executed AFTER the insert / update is executed by the DBMS– You can refer to the pseudo variables :NEW

and :OLD– Examples:

• Shah fig. 14-16 + 14-17, page 332• Employee_adu_triggerAfter.sql

• Used to– Check the certain conditions are still true after

the insert / update

Page 9: Assertions Triggers

Assertions and triggers 9

Instead-of triggers, 333• Not part of the SQL3 standard, but common i

commercial DBMS's• Ordinary triggers

– Before / after the update– for updating base tables.

• Instead-of triggers– executed instead of the update– for updating views

• which would otherwise be non-updatable• Example Shah fig. 14-18, page 333 + 14-19, page 334• Full_employee_insteadOfTrigger.sql