Fa triggers

aryana2500

Active Member
سلام به همه
کسی در مورد triggers نمونه مثالی سراغ داره یا یه توضیح کامل و کاربردی......:)
 

aryana2500

Active Member
درود
بله باید جستجو کرد اما آخه همون پست هم مال خودمه اون موقع رو یه پروژه کار میکردم که احتیاج به Trigger داشت اما چون بحث یه کم برام پیچیده شد بیخیالش شدم اما الان برا یه کار دیگه احتیاج مبرم دارم
واقعا جای یه مثال عملی برای این مبحث تو انجمن خالیه. میدونم شما اساتید سرتون شلوغه همین که میاید اینجا و یه سر میزنید خودش خیلیه اما وقتی برای بعضی مسایل پیش پا افتاده چندین مثال و چندین مبحث وجود داره اما برا این مورد تقریبا هیچی... به نظر من اگه یه مثال کنار آموزش قدم به قدم sqlite گذاشته بشه خیلی عالی میشه تا نظر شما و دوستان دیگه چی باشه
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
با اجازه محمد عزیز

من خودم قبلا یبار کار کردم شما یه دتابیس ایجاد کنید بعدش توش دوتا جدول به اسم های Data1 و Data2 ایجاد کنید برای هر کدوم فیلد هایی رو در نظر بگیرید مثلا

Data1 فیلد هاش باشه id,name,mobile,email و جدول Data2 فیلد هاش باشه id,name,mobile,tozih خب بعدش باید کد مربوط به Trigger رو بنویسید که با تغییر در جدول Data1 داده های مربوط به فیلد جدول Data2 هم تغییر کنه

که کدش میشه این

کد:
CREATE TRIGGER "update_categories" AFTER UPDATE ON "Data1" FOR EACH ROW  BEGIN UPDATE Data2 SET name = (new.name),mobile = (new.mobile) WHERE id = new.id; END;

حالا این کد میاد تغییراتی رو که توی جدول Data1 که روی فیلد های name و mobile انجام میشه رو توی جدول Data2 که فیلد های name و mobile هست هم اعمال میکنه

که میتونید تعداد فیلد ها رو هم تغییر بدید

اما چطوری این کد رو وارد کنیم؟ برای این کار بهتره از نرم افزار SQLite Database Browser استفاده کنید

یعنی بعد از ایجاد دیتابیس و جدول برید به قسمت Execute SQL و بعد کد بالا رو وارد و بعدش دکمه Execute query رو بزنید تا تغییرات اعمال بشه و دکمه Save رو بزنید

درضمن میتونید تغییرات رو توی خود نرم افزار با وارد کردن داده ها به دیتابیس ببینید
 

aryana2500

Active Member
درودآقا محمود و ممنون از پاسخت
مثلا ما تو دیتا بیس دوتا جدول داریم یکی به نام کابینت و دیگری به نام اجزا کابینت این دو تا جدول هم بوسیله (UO (ListView نمایش داده میشه به شکل زیر
شر ح کابینت
ردیف
کابینت زمینی1
کابینت دیواری
2

یعنی تو یه جدول لیست کابینتها و جدول دوم لیست اجزا تشکیل دهنده هر کابینت
حالا میخواهیم اگر کاربر تو لیست مربوط به کابینت یکی از کابینتهارا انتخاب کرد مثلا کابینت زمینی این امکان باشه که علاوه بر حذف کابینت انتخابی اجزای این کابینت هم که تو جدول دوم هست نیز پاک بشه(البته بحث رو میشه پیچیده تر هم کرد مثلا با ویرایش ابعاد یک کابینت اجزا اون هم طبق فرمولی که از قبل تعریف شده تغییر کنه)
در وارد کردن اطلاعات بالاخره یه ارتباطی باید بین این دو جدل ایجاد کرد یا نه

بازم از کلیه دوستان تشکر میکنم


شرح اجزا
ردیف
کفی کابینت زمینی1
دیواره کابینت زمینی
2
درب کایبنت زمینی3
کفی کابینت دیواری
4
دیواره کابینت دیواری5
درب کایبنت دیواری6
7
 
آخرین ویرایش:

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
خب کدش میشه این

کد:
CREATE TRIGGER "Delete_categories" AFTER DELETE ON "Data1" FOR EACH ROW BEGIN DELETE FROM Data2 WHERE id = OLD.id; END;

این کد میاد فیلد هایی که id اونها وی جدول Data2 شبیه Data1 هس رو پاک میکنه

کافیه یکم تمرین تکرار کنید و با کد ها ور برید خیلی کار باهاش راحته
 

aryana2500

Active Member
ممنون آقا محمود
خب ببینید مشکل اینجاست که ما تو دیتابیس به ازا هر ردیف تو جدول A سه یا چهار ردیف تو جدول B داریم و ثبت رکورد به گونه ای ایست که وقتی کاربر یک کابینت ثبت می کند در جدول A شرح کابینت و ابعاد آن و در جدول B اجزا تشکیل دهنده این کابینت همزمان ثبت میشه یعنی به ازا هر ثبت تو جدول A تو جدول B شاید چهارثبت یا بیشتر انجام بشه . خب الان ماباید هنگام ثبت رکورد ارتباط بین این دو جدول و ردیفهاش و تنظیم کنیم؟

این کد میاد فیلد هایی که id اونها وی جدول Data2 شبیه Data1 هس رو پاک میکنه
خب اینجا ما به ازا هر id تو جدول A با چهار id یا بیشتر تو جدول B مواجهیم
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
خب شما به جای id میونید از هر شرط دیگه ای اسفاده کنید و بر اساس id حذف نکنه
 

جدیدترین ارسال ها

بالا