You are on page 1of 4

‫ﺑﻌﺪ اﻷﻧﺘﻬﺎء ﻣﻦ اﻟﻔﺼﻞ ﻳﺠﺐ ان ﻳﻜﻮن ﻗﺎدر ﻋﻠﻰ ‪:‬‬

‫‪ -‬ﺗﻌﺮﻳﻒ اﻟـ ‪Trigger‬‬


‫‪ -‬اﻷﺧﺘﻼف ﺑﻴﻦ اﻧﻮاع وﺗﻘﺴﻴﻤﺎت اﻟـ‪Trigger‬‬
‫‪ -‬اﻷﻧﻮاع واﻟﻤﺪى ﻟﻠـ‪Trigger‬‬
‫‪ -‬اﻟﺨﻮاص اﻟﻤﺆﺛﺮة ﻓﻰ اﻟـ‪Trigger‬‬

‫ﻣﻘﺪﻣﺔ ﻋﻦ اﻟـ‪-: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‬‬

‫ﻳﻮﺟﺪ ﺗﺼﻨﻴﻒ اﺧﺮ ﻟﻠـ‪Triggers‬‬


‫‪When-event‬‬
‫وهﻮ ‪ Trigger‬ﺳﻴﻨﻔﺬ ﻋﻦ ﺗﻨﻔﻴﺬ هﺬا اﻟﺤﺪث‬
‫‪on-event‬‬
‫وهﻮ ‪ Trigger‬اﻳﻀﺎ ﺳﻴﻨﻔﺬ ﻋﻨﺪ ﺗﻨﻔﻴﺬ ﺣﺪث ‪ event‬ﻣﻌﻴﻦ وﻟﻜﻦ ﺳﻮف‬
‫ﻳﻘﻮم ﺑﺎﺳﺘﺒﺪال ‪ Code‬ﺑﻜﻮد اﺧﺮ داﺧﻞ اﻟـ‪Trigger‬‬
‫‪pre-event‬‬
‫وهﻮ ‪ trigger‬ﺳﻴﻨﻔﺬ ﻗﺒﻞ ﺗﻨﻔﻴﺬ هﺬا اﻟﺤﺪث‬
‫‪post_event‬‬
‫وهﻮ ‪ Trigger‬ﺳﻴﻨﻔﺬ وﻟﻜﻦ ﺑﻌﺪ ﺗﻨﻔﻴﺬ ‪ event‬ﻣﻌﻴﻦ‬

‫‪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‬‬

You might also like