ให้เราคุยความแตกต่างเพิ่มเติมระหว่างทริกเกอร์และขั้นตอนด้วยความช่วยเหลือของแผนภูมิเปรียบเทียบที่แสดงด้านล่าง
แผนภูมิเปรียบเทียบ
พื้นฐานสำหรับการเปรียบเทียบ | ทริกเกอร์ | ขั้นตอนการ |
---|---|---|
ขั้นพื้นฐาน | พวกเขาจะดำเนินการโดยอัตโนมัติเมื่อเกิดเหตุการณ์ที่ระบุ | สามารถดำเนินการได้ทุกเมื่อที่ต้องการ |
การเรียกร้อง | ไม่สามารถเรียกทริกเกอร์ภายในโพรซีเดอร์ได้ | แต่คุณสามารถเรียกขั้นตอนภายในทริกเกอร์ได้ |
พารามิเตอร์ | เราไม่สามารถส่งพารามิเตอร์ไปยังทริกเกอร์ | เราสามารถส่งพารามิเตอร์ไปยังกระบวนการ |
กลับ | ทริกเกอร์จะไม่ส่งคืนค่าในการดำเนินการ | ขั้นตอนอาจส่งคืนค่า / s เมื่อดำเนินการ |
คำจำกัดความของ Trigger
ทริกเกอร์เป็นเหมือนขั้นตอนที่ได้รับการดำเนินการโดยอัตโนมัติเมื่อเกิดเหตุการณ์ที่ระบุ เช่นเดียวกับขั้นตอนทริกเกอร์ไม่จำเป็นต้องถูกเรียกอย่างชัดเจน ทริกเกอร์ถูกสร้างขึ้นเพื่อทำงานบางอย่างเพื่อตอบสนองต่อเหตุการณ์ที่ระบุบางอย่าง
ทริกเกอร์สามารถเรียกใช้ในการตอบสนองต่อคำสั่ง DDL (DELETE, INSERT หรือ UPDATE) หรือคำสั่ง DML (DELETE, INSERT หรือ UPDATE) หรือการดำเนินงานฐานข้อมูลบางส่วน (SERVERERROR, LOGON, LOGOFF, STARTUP หรือ SHUTDOWN)
ทริกเกอร์ประกอบด้วยสามองค์ประกอบดังที่อธิบายไว้ด้านล่าง:
- กิจกรรม : เหตุการณ์คือเหตุการณ์ที่เกิดขึ้นซึ่งจะทำให้เกิดการเรียกใช้งาน ทริกเกอร์สามารถสั่งให้เรียกใช้งานได้ทั้ง ก่อน เกิดเหตุการณ์หรืออาจถูกสั่งให้สั่งดำเนินการ หลังจาก ดำเนินการเหตุการณ์
- เงื่อนไข : มันเป็นส่วนเสริมของทริกเกอร์ หากไม่ได้กล่าวถึงทริกเกอร์จะดำเนินการเมื่อมีเหตุการณ์ที่ระบุเกิดขึ้น หากมีการระบุเงื่อนไขระบบจะตรวจสอบกฎเพื่อกำหนดว่าควรจะเรียกใช้หรือไม่
- การดำเนินการ : การดำเนินการเป็นชุดคำสั่ง SQL ที่จะดำเนินการกับการดำเนินการของทริกเกอร์
รูปแบบทั่วไปของการสร้างกิจกรรมได้อธิบายไว้ด้านล่าง:
สร้างทริกเกอร์ก่อน / หลังการกระทำตามเงื่อนไข;
ที่นี่สภาพเป็นตัวเลือก
ความหมายของขั้นตอน
ขั้นตอนสามารถใช้เป็นหน่วยโปรแกรมสร้างขึ้นเพื่อทำงานบางอย่างและจัดเก็บไว้ในฐานข้อมูล คำสั่ง SQL เหล่านั้นถูกเรียกใช้เมื่อต้องการ ขั้นตอนเหมือนฟังก์ชั่นที่ผู้ใช้กำหนดซึ่งผู้พัฒนากำหนดไว้ ขั้นตอนสามารถเรียกใช้โดยใช้ CALL หรือ EXECUTE
ขั้นตอนมีประโยชน์ในสถานการณ์ต่อไปนี้:
- หากแอปพลิเคชั่นอื่นจำเป็นต้องใช้ขั้นตอนหลายอย่างก็สามารถจัดเก็บไว้บนเซิร์ฟเวอร์เพื่อให้สามารถเรียกใช้แอปพลิเคชันใด ๆ ได้ มันจะลดความพยายามในการทำซ้ำขั้นตอนจากฐานข้อมูลหนึ่งไปยังอีกฐานข้อมูลหนึ่งและยังช่วยปรับปรุงโมดุลของซอฟต์แวร์
- เนื่องจากโพรซีเดอร์กำลังดำเนินการบนเซิร์ฟเวอร์มันจะลดการถ่ายโอนข้อมูลและลดต้นทุนการสื่อสาร
- ขั้นตอนสามารถนำมาใช้เพื่อตรวจสอบข้อ จำกัด ที่ซับซ้อนที่อยู่นอกเหนืออำนาจของทริกเกอร์
ให้เราคุยเกี่ยวกับรูปแบบทั่วไปของการสร้างขั้นตอน:
สร้างกระบวนงาน () ผลตอบแทน;
ที่นี่พารามิเตอร์และการประกาศโลคัลเป็นทางเลือก พวกเขาจะกล่าวถึงก็ต่อเมื่อจำเป็นต้องใช้ คำสั่งด้านล่างอธิบายการโทรของขั้นตอน
โทร () ;
ความแตกต่างที่สำคัญระหว่างทริกเกอร์และขั้นตอน
- ความแตกต่างหลักระหว่างทริกเกอร์และโพรซีเดอร์คือทริกเกอร์คือคำสั่งที่ถูกเรียกใช้โดยอัตโนมัติเมื่อมีเหตุการณ์เกิดขึ้น ในทางกลับกันขั้นตอนจะถูกเรียกเมื่อใดก็ตามที่จำเป็น
- หนึ่งสามารถกำหนดขั้นตอนภายในทริกเกอร์ แต่จะไม่มีการกำหนดทริกเกอร์ภายในโพรซีเดอร์เนื่องจากทริกเกอร์จะต้องเรียกใช้โดยอัตโนมัติเมื่อเกิดเหตุการณ์ใด ๆ
- เราสามารถส่งพารามิเตอร์ไปยังโพรซีเดอร์ได้ แต่เราไม่สามารถส่งพารามิเตอร์เพื่อทริกเกอร์เนื่องจากเราไม่ได้เรียกใช้
- โพรซีเดอร์สามารถส่งคืนค่าพารามิเตอร์หรือโค้ด แต่ทริกเกอร์ไม่สามารถทำได้
สรุป:
ทริกเกอร์มีประโยชน์ แต่จะหลีกเลี่ยงหากมีทางเลือกอื่นเนื่องจากมันจะเพิ่มความซับซ้อนของข้อมูล บางครั้งทริกเกอร์ก็ถูกแทนที่ด้วยขั้นตอนที่เหมาะสม