View Full Version : من هنوز با تریگر مشکل دارم!!!
A_1397
یک شنبه 10 دی 1391, 16:38 عصر
اگه ادمین این پست رو حذف نکنه، من هنوز مشکلم در رابطه با تریگر حل نشده!
دوستان لطف کنید یه نمونه تریگر برام بزارید که بین دوتا دیتابیس باشه. تمام تریگرهایی که دیدم بین جداول توی یه دیتابیس بودن ولی من باید با ایجاد تغییر در جدولی در یه دیتابیس، جدول دیگه ای در دیتابیس دیگه ای تغییر کنه :متفکر:
hossein_h62
دوشنبه 11 دی 1391, 07:54 صبح
سلام
کجاش رو مشکل دارین ؟؟!
بصورت زیر میتونید به جدولی در دیتابیس دیگه دسترسی پیدا کنید، مثلا :
DestDataBase.dbo.MyTable
A_1397
دوشنبه 11 دی 1391, 11:02 صبح
من یه نمونه براتون میزارم بگین کجاش اشتباهه.
setANSI_NULLSON
setQUOTED_IDENTIFIERON
go
ALTERTRIGGER [test]
ON [dbo].[table1]
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
update database2.[dbo].[table2] set name='Ali'where code='110'
SETNOCOUNTON;
END
من یه تریگر ایجاد کردم داخل table1 از database1 که کدهاش بالاست و باید با هر تغییری که table1 میکنه یه آپدیت در table2 از database2 اتفاق بیوفته.
hossein_h62
دوشنبه 11 دی 1391, 11:11 صبح
خب وقتی تریگر لانچ میشه چه خطایی میده ؟؟
در database2.dbo.Table2 آیا رکوردی با شرطی که گفتین وجود داره که آپدیت بشه ؟!
A_1397
دوشنبه 11 دی 1391, 11:21 صبح
خب وقتی تریگر لانچ میشه چه خطایی میده ؟؟
در database2.dbo.Table2 آیا رکوردی با شرطی که گفتین وجود داره که آپدیت بشه ؟!
اررور :
Incorrect syntax near the keyword 'database2'.
بله رکوردی به شرایط ذکر شده وجود داره.
hossein_h62
دوشنبه 11 دی 1391, 11:47 صبح
ساختار تریگر نمونه مشکلی نداره، مگر اینکه دیتابیس مقصد یعنی "database2" روی سرور دیگه ای باشه.
A_1397
دوشنبه 11 دی 1391, 12:01 عصر
ساختار تریگر نمونه مشکلی نداره، مگر اینکه دیتابیس مقصد یعنی "database2" روی سرور دیگه ای باشه.
نه دوست من. هر دو دیتابیس روی یه سرور هستن :گیج:
A_1397
دوشنبه 11 دی 1391, 12:11 عصر
هوررررررررررا حل شد مشکل :تشویق: باید database2 رو داخل کروشه میزاشتم! :اشتباه:
حالا یه چیزه دیگه...
چطوری میتونم بفهم که چه تغییری توی table1 رخ داده. آیا آیدیت بوده یا حذف یا... و اینکه این تغییر روی کدوم رکرود بوده. table1 و table2 یک فیلد مشترک دارند که باید از طریق اون، همون رکرودی که در table1 تغییر کرده، همون تغییر هم در همان رکورد در table2 رخ بده.
hossein_h62
دوشنبه 11 دی 1391, 12:22 عصر
باید جداول "Inserted" و "Deleted" را چک کنی. توی تالار موجوده جستجو کن.
A_1397
دوشنبه 11 دی 1391, 13:09 عصر
باید جداول "Inserted" و "Deleted" را چک کنی. توی تالار موجوده جستجو کن.
یه سرچی توی پست ها کردم. متوجه شدم موقه insert اطلاعات در جدولی به نام Inserted و موقع حذف اطلاعات در جدولی به نام Deleted قرا میگیرن. اما حالا موقع آپدیت اطلاعات کجا قرارمیگیرن؟ چطوری میشه فهمید کدوم رکورد چه تغییری کرده؟
hossein_h62
دوشنبه 11 دی 1391, 13:27 عصر
اما حالا موقع آپدیت اطلاعات کجا قرارمیگیرن؟
در هردو جدول! به اینصورت که بعد از UPDATE؛ اطلاعات قبل از بروزرسانی در Deleted و اطلاعات بعد از بروزرسانی در Inserted قرار میگیرن.
یه کم بررسی و تست و جستجو کن کامل متوجه مطلب میشی.
(ضمنا عنوان پست رو هم به یه عنوان مناسب تر اصلاح کن)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.