View Full Version : TRIGGER در سطح ديتابيس
alireza586
سه شنبه 19 آبان 1388, 11:40 صبح
سلام
من تريگري مي خوام كه در سطح ديتابيس باشه و بعد از هر INSERT ,UPDATE,DELETE اجرا شود با تشكر از كليه دوستان.
babila
سه شنبه 19 آبان 1388, 11:51 صبح
خوب تریگرها ذاتا این طوری هستند. و بعد از هر event در دیتابیس اجرا (Fire) میشن. اگه منظورتون چیزی غیر از اینه واضح تر بنویسید.
alireza586
چهارشنبه 20 آبان 1388, 18:15 عصر
با تشكر از شما دوست عزيز
من عنوان TRIGGER را مي خوام ديتابيس من اواكل 9I هستش
باتشكر
kamankash
دوشنبه 09 آذر 1388, 22:16 عصر
سلام
من تريگري مي خوام كه در سطح ديتابيس باشه و بعد از هر INSERT ,UPDATE,DELETE اجرا شود با تشكر از كليه دوستان.
salam
create or replace trigger trigger_name
after update or insert or delete on table_name
begin
trigger_body
end;
hamid.y
یک شنبه 02 اسفند 1388, 23:36 عصر
با سلام خدمت اساتید محترم
یه سوال داشتم لطفا کمکم کنید.
می خوام یه Instead of Insert Trigger بسازم و یه شرط رو چک کنم و یه پیغام yes/no در Interface (سی شارپ) به کاربر بدم.
در صورت جواب بلی رکورد در جدول درج بشه در غیر اینصورت دکورد درج نشه.
حالا با Raiserror فقط میشه یه پغام اطلاعاتی به کاربر داد و نه یه پیغام تعاملی.
آیا اصلا می بایست از Trigger استفاده کرد؟
babila
سه شنبه 04 اسفند 1388, 17:51 عصر
Trigger کاربردش این نیست و بیشترین کاربرد آن در بحث جامعیت دیتابیسه .
Trigger کاملا مستقل از سایر ارتباطات(اینترفیس و C#,...) عمل می کنه و بر روی تغییرات دیتابیس عکس العمل نشون می ده و براش فرقی نمی کنه که این تغییرات (EVENT) از طرف برنامه است یا SQLPLUS یا مستقیما کاربر جدول رو باز کرده و داره دستکاری می کنه یا اینسرت و حذف میکنه.
البته در اوراکل Trigger ها فقط رویدادهای جداول رو Handle نمی کنند.بلکه میتونند رویدادهای مربوط به Database و Schema رو هم handsle بکنه. برای مثال شما می تونین یک Trigger در سطح دیتابیس بنویسن تا در صورت بروز هر خطا در آن دیتابیس آن خطا رودر یک جدول ثبت بکنه.
hamid.y
پنج شنبه 06 اسفند 1388, 21:48 عصر
حالا شما با این شرایط چه راه کاری رو پیشنهاد می کنید؟
babila
جمعه 07 اسفند 1388, 09:52 صبح
به نظر من شما باید یک پروسیجر برای عمل درج داشته باشید و قبل از فراخوانی این پروسیجر شرط خودتون رو چک کنید و در صورت صحیح بودن پروسیجر رو فراخوانی کنید.
البته اگر شرط شما یک رویداد باشه (عمل آپدیت یا اینسرت یا حذف از جدول) می تونید به جای نوشتن پروسیجر و فراخوانی آن یک تریگر برای این کار بنویسید تا بصورت اتوماتیک فراخوانی شود.
hamid.y
جمعه 07 اسفند 1388, 16:29 عصر
با تشکر.
حرف شما درست اما می خواستم ببینم در SQL Server هم مانند Oracle مفهوم PipeLine رو در Trigger ها داریم یا نه؟
اما مثله اینکه همچین چیزی نداریم.
بازم ممنون از جواباتون.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.