SQL Trigger -
insert, update, (truncate) yoki delete operatsiyalaridan sodir bo'lgandan oldin yoki keyin avtomatik ishga tushuvchi funksiya xisoblanadi. Ular tablega bog'liq funksiya xisoblangani uchun, avval trigger function yaratasiz va uni biror tablega bog'lab qo'yasiz.Types
PostgreSQL, MySQL asosan 2 turdagi triggerlarni taqdim qiladi, row-level va statement-level trigger. Ikkisini bir-biridan farqi necha marta va qaysi vaqtda ishga tushishida. Oddiyroq misol keltiradigan bo'lsak, 100 ta ma'lumot
insert qilayabsiz demak row-level 100 marta ishlasa statement-level 1 marotaba ishlaydi.Hozirda ba'zi ORMlar ham event sodir bo'lishidan oldin yoki keyin qandaydir ishlar qilish imkoniyatini berishini bilishingiz mumkin misol uchun SQLAlchemy va Django ORM. Django signals bu triggerni ORM level implementatsiyasi xisoblanadi. Ishlashi database-level triggerga o'xshaydi va siz pre_init, post_init, pre_save, post_save kabi signal turlari bilan o'zingiz hohlagan vaqtda biror logikani amalga oshirishingiz mumkin.
Problems with triggers
Triggerni kamchiliklari yo'q ammo dasturchilarda bor chunki hamma narsani ham triggerga berish xato. Triggerdan faqat kerak bo'lgan xolatdagina foydalanishni tavsiya qilaman. Ba'zan noto'g'ri yozilgan trigger juda ko'p muammolarga olib kelishi mumkin chunki ular avtomatik ishga tushgani uchun sizga ko'rinmaydi. Ba'zan esa ko'plab foyda olib kelishi mumkin ya'ni ishingizni, vaqtingizni tejashi mumkin.
@otabekswe