ورود

View Full Version : سوال: update جدول يك بانك از روي جدول يك بانك ديگر



ali_abbasi22145
سه شنبه 27 مرداد 1388, 12:09 عصر
سلام
من مي خواهم اگر بانك carddb جدول manintable فيلدهاي name ,name_khanevadeghi تغيير كند آنوقت بانك carddb2 جدول manintable فيلدهاي name ,name_khanevadeghi هم تغيير نمايد.
فيلد shomareh_karmanidi در هردو بانك بدون تغيير و يكتا است.

محمد سلیم آبادی
سه شنبه 27 مرداد 1388, 15:45 عصر
از After Update Trigger همراه با دستور exec باید استفاده کنید.

ali_abbasi22145
چهارشنبه 28 مرداد 1388, 10:44 صبح
سلام
1-من سالي يك بار اين update را دارم و اگر اسكريپتي باشد كه اين update را انجام دهد مشكلم حل مي شود.
2-جدول اول من 30 ركورد دارد و من يكسري تغيير در فيلدهاي name ,name_khanevadeghi انجام مي دهم وكار چاپ ركوردهايم تمام مي شود و بعد دوباره كاربرانم برايم 90 ركورد مي دهند كه همان 30 ركورد اول هست و 60 تا جديد اضافه كرده اند و تغييرات 30 ركورد اولم در ان نيست؟
من مي خواهم 30 ركورد تغيير يافته ام به اضافه ركوردهاي جديد را داشته باشم.
فكر كنم با import با يكسري شرط هم مشكلم حل شود و كسي اين شروط را مي داند؟

محمد سلیم آبادی
چهارشنبه 28 مرداد 1388, 12:59 عصر
زیاد از مطالب پست شماره 3 سردرنیاوردم.
به هر حال اگر مشکل شما آن چیزی است که در پست یک مطرح کردید راه حل ساده ای دارد من به طور آزمایشی دو بانک و دو جدول همنام و همنوع ایجاد کردم.
اگر سطری از جدول بانک اول تغییر کند سطر متناظر آن در بانک دوم نیز تغییر خواهد کرد، کدش به صورت زیر است.



USE db1
GO
ALTER TRIGGER trg_UA_tbl1
ON t1
AFTER UPDATE
AS
BEGIN
DECLARE @a NVARCHAR(50),
@b NVARCHAR(50)
SELECT @a=id, @b=v
FROM Inserted
--USE db2 UPDATE t1 SET v=@b WHERE id=@a
--a USE database statement is not allowed in a procedure, function or trigger.
EXEC('USE db2 UPDATE t1 SET v='''+@b+''' WHERE id='+@a);
END

ali_abbasi22145
شنبه 31 مرداد 1388, 12:41 عصر
سلام وتشكر
من تا به حال از TRIGGER استفاده نكرده ام، روش كار با TRIGGER چگونه و كجا بايد بنويسم و اجرا كنم؟

محمد سلیم آبادی
شنبه 31 مرداد 1388, 13:25 عصر
Trigger یک رویداد است که هر گاه مثلا عمل Insert یا Update ای روی جداول شما انجام می شود بطور خودکار اجرا می شود.
برای ایجاد آن کافی است که در یک پنجره Query آن را اجرا یا Exec کنید. البته باید برای اولین بار به جای Alter از Create استفاده کنید.