ورود

View Full Version : ایجاد Trigger‌ با توجه به تاریخ سیستم



mehdi58
شنبه 08 مهر 1385, 12:53 عصر
سلام
جدول Table1‌ من شامل فیلدهای زیر می باشد :

F1, F2, F3

در F1‌ تاریخ ذخیره می شود .
در F2 یک عدد ( مهلت زمانی) ذخیره می شود .
در F3 به طور پیش فرض عدد صفر ذخیره می شود .

من میخوام Trigger‌ ای بنویسم که بطور اتوماتیک هر بار در صورتیکه تاریخ سیستم تغییر کرد فقط یک بار عمل زیر رو انجام بده :

ابتدا مقایسه ای بین تاریخ جاری سیستم با تاریخ ذخیره شده در فیلد F1 انجام بشه و در صورتیکه اختلاف این دو تاریخ از عدد موجود توی فیلد F2‌ کوچکتر بود اونوقت این اختلاف در فیلد F3 ذخیره بشه اما اگه اختلاف صفر شد مقدار داخل F3‌ صفر بشه و دیگه این Trigger انجام نشه .
من واسه انجام اون یه کارهایی کردم :



DECLARE @ def int
SET @def= (SELECT DATEDIFF (day, F1, GETDATE ()) FROM Table1)
If @def <= (SELECT F2 FROM Table1)
Begin
/… انجام عمل درج اختلاف در فیلد مربوطه
End
Else
/… ثبت عدد صفر در فیلد مربوطه


( ضمننا قسمتهایی که بطور فارسی نوشته شده رو مشکلی واسه نوشتنش ندارم !)


اما واسه نوشتن این Trigger به چند تا مشکل بر خوردم :

1 ) Trigger رو چه جوری بنویسم که فقط یه بار اون هم بلافاصله بعد از تغییر تاریخ سیستم انجام بشه.

2 ) این Trigger چه جوری نوشته بشه که واسه تمامی رکوردهای موجود توی جدول Table1 این کار انجام بشه .

لطفا اگه امکانش هست trigger مورد نظر رو با کد بگین .
متشکرم

AminSobati
شنبه 08 مهر 1385, 21:49 عصر
ظاهرا شما به Trigger روی Update نیاز دارید و کار ساده ای به نظر میرسه. از جدول Inserted و Deleted براحتی میتونین برای این منظور استفاده کنین. مشکل کجاست؟

mehdi58
شنبه 08 مهر 1385, 22:47 عصر
با نهایت شرمندگی ...
من فقط می دونم که این کار رو میشه با Trigger انجام داد و خیلی اطلاعات جامعی در زمینه دو جدولی که گفتین ندارم .
راستش سراغ Help هم رفتم اما خیلی شلوغ پلوغ بود .
لطفا اگه امکانش هست راهنمایی بیشتری بفرمایین .
متشکرم