Professional Documents
Culture Documents
Chapter 12
Chapter 12
ﻣﻘﺪﻣﺔ ﻋﻦ اﻟـ-:Trigger
هﺬا اﻟـ Triggerﻳﻜﻮن ﻋﺒﺎرة ﻋﻦ ﺟﺰء ﻣﻦ اﻟﺒﺮﻧﺎﻣﺞ ﻳﻨﻔﺬ اﺛﻨﺎء ﺣﺪوث او
ﺗﻨﻔﻴﺬ ﺣﺪث ﻣﻌﻴﻦ.
اﻟـ Triggerﻳﺴﻤﺢ ﻟﻚ ﺑﺒﻨﺎء ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺨﻮاص داﺧﻞ اﻟﺘﻄﺒﻴﻖ اﻟﺨﺎص
ﺑﻚ اﺛﻨﺎء Run timeأوﻣﻌﺘﻤﺪ ﻋﻠﻰ ﻓﻌﻞ ﻳﺆدى ﻣﻦ ﺧﻼل اﻟﻤﺴﺘﺨﺪم ﺑﺪون
آﺘﺎﺑﺔ اى آﻮد ﻳﻮﺟﺪ ﻣﺠﻤﻮﻋﺔ اﻟـ eventﺗﺴﺘﻄﻴﻊ ﻣﻦ ﺧﻼﻟﻬﺎ اﺟﺮاء trigger
ﻣﺜﻞ :
1. query_related event
2. data entry and validation
3. logical or physical navigation
4. operator interaction with item in the form
5. internal event in the form
6. error and messages
Trigger categories
1- Block processing:
وهﻰ ﺣﺎﺻﺔ ﺑﺎﻟـ Triggerاﻟﺘﻰ ﺗﺘﻌﺎﻣﻞ وﺗﺪﻳﺮ اﻟﺼﻔﻮف او اﻟـ Record
داﺧﻞ اﻟـ Block
ﻣﺜﻞ
When Create Record,When_Clear_Block,
When.Remove_Record
2-Interface Event:
وهﻰ ﻣﺠﻤﻮﻋﺔ اﻟـ Triggerاﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ اﻟﺸﻜﻞ اﻟﺨﺎرﺟﻰ ﻟﻠـ Form
ﻣﺜﻞ
Key_When_Button_Pressed_When(Check
Box/List/Radio)_Changed
3-Master_detail
وهﻰ ﻣﺠﻤﻮﻋﺔ اﻟـ Triggerاﻟﺨﺎﺻﺔ ﺑﺎﻟـ Master Blockﻣﺜﻞ Dept
Blockو Details Blockﻣﺜﻞ Cmp Block
4-Message_Hndling
وهﻰ ﻣﺠﻤﻮﻋﺔ اﻟـ Triggerاﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ ﺣﺪوث رﺳﺎﺋﻞ ﺗﻈﻬﺮ
ﻟﻠﻤﺴﺘﺨﺪم ﻣﺜﻞ On_Error,On_Message
5-Navigaitional
وهﻰ اﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ اﻟﺪﺧﻮل واﻟﺨﺮوج داﺧﻞ ﻣﺴﺘﻮﻳﺎت اﻟـ Formاو اﻟـ
Blockﻣﺜﻼ
)Pre(Form/Block/Record
When(Form/Block/Record)in stance
Query-time
هﻰ ﻣﺴﺌﻮﻟﻪ ﻋﻦ ﺗﻨﻔﻴﺬ Triggerﻣﻌﻴﻦ ﻗﺒﻞ او ﺑﻌﺪ اﺟﺮاء اﻻﺳﺘﻌﻼم ﻣﺜﻼ
Pre_query
Post_query
Validation
وهﻰ اﻟﻤﺴﺌﻮﻟﺔ ﻋﻦ اﻟﺘﺎآﺪ ﻣﻦ اﻟﺒﻴﺎﻧﺎت ﻣﻌﻴﻨﺔ داﺧﻞ اﻟـ Formﻣﺜﻞ
)When-Validation-(item-record
key trigger
وهﻰ Triggerﻣﺮﺗﺒﻄﺔ اﻟﺘﻨﻔﻴﺬ ﻣﻦ ﺧﻼل ﺿﻐﻂ ﻋﻠﻰ زر ﻣﻌﻴﻦ f1-f2
Trigger Components
-1ﻧﻮع اﻟـ:Trigger
ﻣﺎهﻮ اﻟﺤﺪث اﻟﺬى ﺳﻮف ﻳﺤﺪث ﻟﺘﺸﻐﻴﻞ هﺬا اﻟـTrigger
-2اﻟﻜﻮد :Trigger
هﻮ Pl/Sqlاﻟﺬى ﺳﻮف ﻳﻜﺘﺐ ﻟﻴﺆدى ﻋﻤﻠﻴﺎت ﻣﻌﻴﻨﺔ اﺛﻨﺎء ﺣﺪوث هﺬا
اﻟـTrigger
:Triggers scope -3
اﻟﻤﺪى وهﻮ اﺳﺒﻘﻴﺔ ﺗﻨﻔﻴﺬ Triggerﻓﻰ ﻣﻜﺎن اﺧﺮ
-1أﻧﻮع اﻟـ:Trigger
وهﻰ آﻤﺎ ﺗﺤﺪﺛﻨﺎ ﺳﺎﺑﻘﺎ)(when-on-pre-post-key
:Trigger code-2
ﺳﻨﻘﻮم ﺑﻜﺘﺎﺑﺔ pl/sql plackداﺧﻞ Begin….endوﻣﻦ اﻟﻤﻤﻜﻦ ﺑﺪاﺧﻠﻬﺎ
اﺳﺘﺨﺪام اﻟـ DMLﺳﺘﻨﻔﺬ اﺛﻨﺎء ﺣﺪوث هﺬا اﻟـ Triggerواﻳﻀﺎ ﺳﻨﺘﻌﺮف
آﻠﻤﺎت ﺑﺪﻳﻠﺔ ﻋﻦ DTLﻣﺜﻼ Commit_Form
Trigger scope
اﻟﻤﺪى ﻟﻠـ -:Triggerﻳﻮﺟﺪ ﺗﺴﻠﺴﻞ ﻟﻠﻤﺪى ﻟﻜﻞ Triggerﻳﺤﺪد ﺑﻨﺎء ﻋﻠﻰ
اﻟﻤﺴﺘﻮى اﻟﻮاﻗﻊ ﻓﻴﻪ هﺬا اﻟـ Triggerوﻳﻮﺟﺪ ﺛﻼث ﻣﺴﺘﻮﻳﺎت وهﻨﺎ ﻳﻤﻜﻦ
ﻋﻤﻞ trigger
Form level -1
وهﻨﺎ ﻳﻤﻜﻦ ﻋﻤﻞ triggerﻋﻠﻰ ﻣﺴﺘﻰ اﻟـ formﺑﺎﻟﻜﺎﻣﻞ اى ﻳﻨﻔﺬ هﺬا
اﻟـ triggerﻣﻊ ﺑﺪاﻳﺔ اﻧﺸﺎء اﻟـ Formوﻗﺒﻞ اﻧﺸﺎء اى Blockداﺧﻞ هﺬﻩ
اﻟـForm
Block leve -2
وهﻨﺎ ﻳﻤﻜﻦ ﻋﻤﻞ هﺬا اﻟـ Triggerﻋﻠﻰ ﻣﺴﺘﻮى اﻟـ Blockوﻳﻨﻔﺬ هﺬا
اﻟـ Triggerﻋﻨﺪ اﻟﻮﺻﻮل اﻟﻰ هﺬا اﻟـ Blockوﺑﺪاﻳﺔ اﻟﻌﻤﻞ ﻋﻠﻰ هﺬا
اﻟـBlock
Item level -3
وهﻨﺎ ﻳﻤﻜﻦ ﻋﻤﻞ هﺬا اﻟـ triggerﻋﻠﻰ ﻣﺴﺘﻮى هﺬا اﻻ Itemوﻻ ﻳﻌﻤﻞ اﻻ
ﻋﻨﺪ اﻟﺘﻌﺎﻣﻞ ﻣﻊ هﺬا اﻟـ Itemﺳﻮاء آﺎن Text Itemأو ......ListItem
ﻣﻠﺤﻮﻇﺔ:
ﺑﻌﺪ اﻟـ Triggerﻻﻳﻤﻜﻦ ان ﺗﻌﺮف ﺧﺎرج اﻟﻤﺴﺘﻮى اﻟﺨﺎص ﺑﻬﺎ ﻣﺜﻞ
Post/Queryﻻﻳﻤﻜﻦ ان ﺗﻌﺮف ﻋﻠﻰ ﻣﺴﺘﻮى اﻟـ Itemوﻟﻜﻦ ﻳﺠﺐ ان
ﺗﻌﺮف ﻋﻠﻰ ﻣﺴﺘﻮى اﻟـBlock
ﻣﻠﺤﻮﻇﺔ:
اذا ﻗﻤﻨﺎ ﺑﻌﻤﻞ Triggerﻋﻠﻰ ﻣﺴﺘﻮى اﻟـ Formواﺧﺮى ﻋﻠﻰ اﻟـBlock
واﺧﺮى ﻋﻠﻰ Itemﻳﻨﻔﺬ اﻟـ Triggerاﻟﻤﺒﻨﻰ ﻋﻠﻰ ﻣﺴﺘﻮى اﻟـ Formاوﻻ ﺛﻢ
ﻋﻠﻰ ﻣﺴﺘﻮى ال Blockﺛﻢ ﻋﻠﻰ ﻣﺴﺘﻰ اﻟـItem