الأزنده أ.موضي المحرج.

Slides:



Advertisements
Similar presentations
Triggers. Triggers: Motivation Assertions are powerful, but the DBMS often can’t tell when they need to be checked. Attribute- and tuple-based checks.
Advertisements

Triggers The different types of integrity constraints discussed so far provide a declarative mechanism to associate “simple” conditions with a table such.
Creating Triggers.
Oracle Architecture Overview.
Oracle PL/SQL TRIGGERS
1 Triggers. 2 What is a Trigger? A trigger is a PL/SQL block that is automatically called when certain events occur in the database. Triggers can be made.
A Guide to Oracle9i1 Advanced SQL And PL/SQL Topics Chapter 9.
SQL DDL constraints Restrictions on the columns and tables 1SQL DDL Constraints.
Triggers in SQL’99 CS561.
Triggers.
Triggers. What is a trigger? A trigger defines an action that the database should take when some event occurs in the application. It is triggered by an.
Stored Procedures PL/SQL code stored in the database and executed when called by the user. Called by procedure name from another PL/SQL block or using.
Bordoloi and Bock PROCEDURES, FUNCTIONS & TRIGGERS.
Adapted from Afyouni, Database Security and Auditing Database Application Auditing – Ch. 8.
PL/SQL and the Table API. Benefits of Server-Side Code Speedy Pizza MENU NAPOLITAINE PIZZA Reduced network traffic Maintainability Data integrity Triggers.
PL / SQL P rocedural L anguage / S tructured Q uery L anguage Chapter 7 in Lab Reference.
 SQL stands for Structured Query Language.  SQL lets you access and manipulate databases.  SQL is an ANSI (American National Standards Institute) standard.
Database Design lecture 3_1 1 Database Design Lecture 3_1 Data definition in SQL.
Databases in Visual Studio. Database in VisualStudio An MS SQL database are built in Visual studio The Name can be something like ”(localdb)\Projects”
CpSc 462/662: Database Management Systems (DBMS) (TEXNH Approach) Constraints, Triggers and Index James Wang.
ACTION QUERIES (SQL COMMANDS ) STRUCTURED QUERY LANGUAGE.
1. 1. Which type of argument passes a value from a procedure to the calling program? A. VARCHAR2 B. BOOLEAN C. OUT D. IN 2.
In Oracle.  A PL/SQL block stored in the database and fired in response to a specified event ◦ DML statements : insert, update, delete ◦ DDL statements.
SQL Basics. 5/27/2016Chapter 32 of 19 Naming SQL commands are NOT case sensitive SQL commands are NOT case sensitive But user identifier names ARE case.
SQL: DDL. SQL Statements DDL - data definition language –Defining and modifying data structures (metadata): database, tables, views, etc. DML - data manipulation.
1 ISYS Triggers. 2 Agenda Triggers Review Correlation identifiers (pseudo records) Restrictions on triggers Trigger usage Mutating tables Enabling.
School of Computing and Management Sciences © Sheffield Hallam University SQL is non-procedural –designed to be relatively approachable to non- programmers.
Creating DDL and Database Event Triggers. 2 home back first prev next last What Will I Learn? Describe events that cause DDL and database event triggers.
Dec 8, 2003Murali Mani Constraints B term 2004: lecture 15.
Objectives Database triggers and syntax
PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 9 Database Triggers.
1 SQL-2 Tarek El-Shishtawy Professor Ass. Of Computer Engineering.
PL/SQLPL/SQL Oracle11g: PL/SQL Programming Chapter 9 Database Triggers.
PL/SQLPL/SQL Oracle10g Developer: PL/SQL Programming Chapter 9 Database Triggers.
Chapter 5 : Integrity And Security  Domain Constraints  Referential Integrity  Security  Triggers  Authorization  Authorization in SQL  Views 
Distributed Database Applications COSC 5050 Week Six.
A procedure is a module performing one or more actions; it does not need to return any values. The syntax for creating a procedure is as follows: CREATE.
A database trigger is a stored PL/SQL program unit associated with a specific database table. ORACLE executes (fires) a database trigger automatically.
Chapter 19: Triggers1 Chapter Nineteen Triggers Objective: – Understanding Triggers – Types of Triggers – Applications of Triggers – How to work with Triggers.
Constraints and Views Chap. 3-5 continued (7 th ed. 5-7)
Chapter 13 Triggers. Trigger Overview A trigger is a program unit that is executed (fired) due to an event Event such as updating tables, deleting data.
Murali Mani Constraints. Murali Mani Keys: Primary keys and unique CREATE TABLE Student ( sNum int, sName varchar (20), dept char (2), CONSTRAINT key.
C Copyright © 2004, Oracle. All rights reserved. Studies for Implementing Triggers.
Creating Triggers.
ISYS Triggers.
Creating Triggers.
CS SQL.
Creating Database Triggers
Active Database Concepts
Instructor: Jason Carter
Introduction to Triggers
Triggers Creating Triggers (Statement level and Row LEVEL)
Agenda Triggers Review Correlation identifiers (pseudo records)
Lecturer: Mukhtar Mohamed Ali “Hakaale”
ISYS Triggers.
Database Management Systems 2
PL/SQL Programing : Triggers
Advanced SQL: Views & Triggers
DATABASE SQL= Structure Query Language مبادئ قواعد بيانات
مقدمة في قواعد البيانات
Database systems Lecture 3 – SQL + CRUD
Introduction to Triggers
Oracle9i Developer: PL/SQL Programming Chapter 8 Database Triggers.
Session - 6 Sequence - 1 SQL: The Structured Query Language:
Creating Triggers.
Triggers.
Prof. Arfaoui. COM390 Chapter 9
Triggers in SQL’99 CS561.
TRIGGERS.
Presentation transcript:

الأزنده أ.موضي المحرج

ما هو الزناد Trigger هو بلوك أو برنامج pl/sql مرتبط ب Table أو schema أو بقاعدة البيانات و يتم تنفيذه عند حدوث حدث معين. أقسام الأزندة: 1) أزندة مرتبطة بقواعد البيانات (Database Trigger). 2) أزندة مرتبطة بالتطبيقات (Application Trigger) : هو الزناد الذي تتم كتابته في النماذج باستخدام Form Builder و يتم تطبيقه عند حدوث حدث معين في التطبيق.

أزندة قواعد البيانات ؟ زناد قاعدة البيانات (Database Trigger): هو قطعة برمجية تنفذ تلقائياً عند إجراء عملية إدخال, حذف أو تعديل على الجدول المرفق معه هذا الزناد بغض النظر عن المستخدم أو التطبيق الذي قام بإجراء هذه العملية.

لماذا نستخدم الـ Triggers 1- زيادة و تقوية مستوى السرية و الأمان في قاعدة البيانات. 2- عمل شروط للتحكم في الإدخال بحيث تكون شروط متقدمة. 3- عمل توثيق للتغيرات التي تحدث على الجدول و ذلك عند تعديل أو حذف السجلات حيث يمكننا إنشاء جدول آخر يتم فيه تسجيل البيانات القديمة التي تم تعديلها أو حذفها.

إرشادات كتابة الزناد عند تصميم الزناد لابد لنا من مراعاة الأمور التالية : 1- نستخدم الزناد لضمان أنه عند حدوث حدث ما فإن عملاً معيناً يجب أن ينفذ. 2- نستخدم زناد قواعد البيانات للعمليات المركزية العامة مثل insert, update, delete. 3- لا نكتب زناداً يكرر أو يستبدل عملية مكتوبة و مبرمجة مسبقاً في قاعدة البيانات, مثلا لا نقوم بكتابة زناد متعلق بالمفتاح الرئيسي Primary Key. 4- استخدمي الزناد عند الحاجة دون إفراط لأن كثرة تعريف الأزندة يتسبب في تعقيدات كثيرة عند متابعة التطبيق أو صيانته.

إنشاء الزناد حتى نقوم بإنشاء الزناد بصورة صحيحة لا بد من تحديد العديد من الأمور قبل البدء بكتابة محتوى هذا الزناد. لذا علينا تحديد: وقت الزناد. الحدث المسبب لإطلاق الزناد. نوع الزناد (مستواه). جسم الزناد (العمل الذي يقوم به الزناد).

إنشاء الزناد

1) وقت الزناد يحدد هذا الجزء من تعريف الزناد ”متى سيتم تنفيذ الزناد“ و هناك وقتان: 1- قبل (Before): في هذه الحالة يتم تنفيذ جسم الزناد قبل حدوث عملية معالجة البيانات. 2- بعد (After): في هذه الحالة يتم تنفيذ جسم الزناد بعد حدوث عملية معالجة البيانات.

2) الحدث المسبب للزناد نقوم بهذا الجزء تحديد الحدث الذي سيؤدي إلى إطلاق الزناد و تنفيذه. و العمليات التي تؤدي إلى تنفيذ الزناد هي: 1- عند إدخال سجل جديد في الجدول insert. 2- عند تعديل سجل بالجدول باستخدام جملة Update. 3- عند حذف سجل من الجدول باستخدامDelete . * و تسمى هذه العمليات ” عمليات معالجة البيانات ( (DML“.

3) جسم الزناد يحدد هذا الجزء العمل الذي سيتم تنفيذه عندما يتم إطلاق الزناد بناءً على تنفيذ جملة معالجة بيانات معينة. ممكن أن يحتوي هذا الجزء على جمل SQL و PL/SQL و يمكن أن يحتوي على جمل لتعريف المتغيرات, الاستثناءات و غيرها.

الصيغة العامة لتعريف الزناد تستخدم Replace في حالة أردنا التغيير على كود زناد معين. اسم الزناد وقت الزناد مثل: Before, After. حدث الزناد مثل: insert, update, delete. جسم الزناد (جسم)

أ. على مستوى جملة (Statment) 4) نوع الزناد (مستواه) تنقسم الأزندة من حيث مستوى تطبيقها إلى نوعين كما في الشكل التالي: انواع الأزندة من حيث مستواها ب. على مستوى سطر (Row) أ. على مستوى جملة (Statment)

أ. صيغة تعريف الزناد على مستوى جملة هذا النوع يتم تنفيذه مرة واحدة فقط. CREATE [OR REPLACE] TRIGGER trigger_name Timing event1 [OR timing event2 Or timing event3] ON table_name PL/SQL block;

صيغة تعريف الزناد على مستوى جملة .. تابع مثال: إنشاء زناد ” قبل“ على مستوى جملة بحيث تكون الاضافة على جدول الموظفين بين الساعه 8-18 فقط: SQL> CREATE OR REPLACE TRIGGER secure_emp BEFORE INSERT ON emp BEGIN IF (TO_CHAR (sysdate, ‘HH24’) NOT BETWEEN ‘08’ AND ‘18’) THEN RAISE_APPLAICATION_ERROR (-20500, ‘You may only insert into EMP during normal hours.’); END IF; END; /

المثال السابق يوضح انه لا يسمح بإدخال صفوف على جدول الموظفين إلا فى مواقيت العمل الرسمية وذلك فى حالة ادخال صف فى جدول الموظفين فى وقت مابين السادسة مساءاً والثامنة صباحا فانه يقوم بعمل استثناء و إفشال عملية الادخال.

ب. صيغة تعريف الزناد على مستوى سطر CREATE [OR REPLACE] TRIGGER trigger_name Timing event1 [OR timing event2 Or timing event3] ON table_name [ REFERENCING OLD AS OLD | NEW AS new] FOR EACH ROW [WHEN condition] PL/SQL block;

صيغة تعريف الزناد على مستوى سطر .. تابع يتم تنفيذه في كل مرة نقوم بإجراء تعديل أو حذف أو إدخال سجل جديد وفيه يمكننا أن نشير إلى قيمة أي حقل باستخدام المعاملين New & Old في عمود ما , وفيه نستخدم جملة For Each Row. الكلمتان New , Old تستخدمان فقط في الزناد المعرف على مستوى سطر. بحيث: - Old: يشير إلى القيمة القديمة (أي قيمة الحقل قبل التعديل أو الحذف). - New: يشير إلى القيمة الجديدة (أي قيمة الحقل بعد التعديل أو القيمة الجديدة المراد إدخالها).

صيغة تعريف الزناد على مستوى سطر .. تابع مثال: في المثال يقوم بإنشاء زناد يعمل على الادخال و التحديث للراتب في جدول الموظفين , بحيث في جملة if إذا لم تكن الوظيفة الجديدة بين الوظائف ('AD_Pres' ,'AD_VP') و الراتب الجديد أكبر من 15000 فإنه يتم إيقاف العملية و عدم استكمال التحديث أو الإدخال.

إدارة الأزندة Triggers عندما نقوم بكتابة ال Database Triggers نحتاج لعمل الأشياء التالية: 1- معرفة الTriggers الموجودة حالياً. 2- تمكين أو عدم تمكين Triggers من العمل. 3- حذف Triggers. وللتعامل مع كل هذه الأشياء يوفر لنا الأوراكل جدول عروض View يتم فيه حفظ كل البيانات والمعلومات عن كل ال Triggers للمستخدم. وهذا ال View يعرف باسم User_triggers وتوصيفه كالتالي:- SQL> desc user_triggers Name Null? Type --------------------------------------- --------------- ------------------------ TRIGGER_NAME NOT NULL VARCHAR2(30) TRIGGER_TYPE VARCHAR2(16) TRIGGERING_EVENT VARCHAR2(26)

إدارة الأزندة Triggers

مثال 1: لمعرفة الـTriggers الموجودة حالياً و المرتبطة بجدول Emp: SQL> select trigger_name,triggering_event,trigger_type 2 from user_triggers 3 where table_name = 'EMP'; TRIGGER_NAME TRIGGERING_EVENT TRIGGER_TYPE ---------------------------- ---------------------------- ------------------------- EMPNO_COUNTER INSERT BEFORE EACH ROW EMP_HISTORICAL_LOG UPDATE OR DELETE AFTER EACH ROW EMP_SECURITY UPDATE BEFORE EACH ROW JUST_TWO_ANALIST INSERT OR UPDATE BEFORE EACH ROW SALES_COMM INSERT OR UPDATE BEFORE EACH ROW

مثال 2: لمعرفة نوع الTriggers نقوم بتنفيذ الأمر التالي: SQL> select description from user_triggers 2 where trigger_name = 'SALES_COMM'; عند تنفيذ الأمر أعلاه سوف تظهر النتيجة كالتالي:- sales_comm before insert or update on emp for each row اسم الTrigger المراد الاستعلام عن نوعه

تمكين و عدم تمكين الـ Trigger أحياناً قد نحتاج لعدم تمكين ال Trigger وذلك بجعله DISEABLE ، وعادةً ما نحتاج هذا الأمر عندما يحدث أمر طارئ ونريد أن نتخطى عمل ال Trigger . مع ملاحظة أن نرجعه إلى حالته الأولى فور الانتهاء من هذا الأمر الطارئ و نختار ENABLE لإعادة تمكينه. ALTER TRIGGER trigger_name < ENABLE | DISABLE > ; لتفعيل أو تعطيل كل الأزندة المعرفة على جدول ما نستخدم الأمر: ALTER TABLE table_name DISABLE | ENABLE ALL TRIGGERS;

تمكين و عدم تمكين الـ Trigger.. تابع مثال 1: قومي بتمكين الزناد secure_emp ؟ ALTER TRIGGER secure_emp enable ; مثال 2: قومي بعدم تمكين الزناد secure_emp ؟ ALTER TRIGGER secure_emp disable ; مثال 3: فعّلي جميع الأزندة المعرفة على جدول emp ؟ ALTER TABLE emp ENABLE ALL TRIGGERS;

حذف الTriggers ملاحظة: DROP TRIGGER trigger_name ; مثال: قومي بحذف الزناد secure_emp المرتبط في جدول emp DROP TRIGGER secure_emp; ملاحظة: في حالة حذف جدول من قاعدة البيانات سيتم حذف جميع الأزندة المرتبطة به تلقائياً.