PDA

View Full Version : نوشتن یک Trigger برای ذخیره خودکار کوئری هایی که روی بانک تغییرات ایجاد می کند



m0rteza
شنبه 03 مرداد 1388, 16:44 عصر
از دوستان عزیز کمکی برای نوشتن یک Trigger برای ذخیره خودکار کوئری هایی که روی بانک تغییرات ایجاد می کند می خوام
مثلا

Update Tbl_test Set Name='Ali',Age=12 Where PerCode=1

Insert Into Tbl_Test(Name,Age) Values('Reza',16)
هدفم اینه که این کوئری ها رو می خوام ببرم روی بانک دیگه و اونجا اجرا کنم . تا با بانک اولی یکی بشه . (فعلا باید از این روش استفاده کنم)

با تشکر

m0rteza
سه شنبه 06 مرداد 1388, 20:08 عصر
لطفا اگر اطلاعاتی در این زمینه هست خوشحال می شم . متشکرم

meysam_pro
سه شنبه 06 مرداد 1388, 23:56 عصر
تریگرها چند نوع هستن، که یکی اش به درد شما میخوره. شما تریگری از نوع After نیاز دارید تا این کار رو براتون بکنه.
زمانی که تریگرها فعال میشن یعنی رویدادی که به خاطرش تعریف شدن ،اتفاق افتاده(Update,delete,insert).
بعد فعال شدن دو جدول سیستمی دقیقا هم ساختار با جدول مربوطه از تغییری که رو جدول افتاده پر میشه به اسم های Inserted و Deleted. اگه یک رکورد تغییر کنه این جدولها یک رکورد و اگه بیشتر(مثلا Insert چند رکوردی) دقیقا به همون اندازه. دقت کنید این جدولها برای هربار عمل هستش.
مقادیر عوض شده رو از این جدولها بخونید و مطابق ساختار جدولتون دستور رو درست کنید.
اگه جدولهاتون زیاده میتونید یه برنامه بنویسید تا این تریگر رو واسه هموشون درست کنه.

Any question?

meysam_pro
سه شنبه 06 مرداد 1388, 23:59 عصر
یادم رفت بگم. هر عمل Update رکورد/های معادل رو پاک میکنه و یکی جدید Insert میکنه.

In_Chan_Nafar
چهارشنبه 07 مرداد 1388, 13:07 عصر
دوست عزيز به اين نوع تريگرها DDL trigger مي گويند كه از SQL 2005 به بعد معرفي شده است


CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement [ ; ] [ ...n ] | EXTERNAL NAME < method specifier > [ ; ] }

::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ]

::=
assembly_name.class_name.method_name




----------------------
مثالش در سايت codeproject
http://www.codeproject.com/KB/database/sql2005dba.aspx?fid=1100040&df=90&mpp=25&noise=3&sort=Position&view=Quick

masoud.ramezani
چهارشنبه 07 مرداد 1388, 19:46 عصر
سلام دوست عزیز

شاید مطلب زیر به دردتون بخوره


رهگیری تغییرات داده ای در SQL Server 2008 (http://sqlserver2008.persianblog.ir/post/31/)

masoud.ramezani
پنج شنبه 08 مرداد 1388, 09:42 صبح
سلام مجدد

شاید این مطلب هم مفید باشه :


توسعه و بهبود DDL برای Trigger (http://sqlserver2008.persianblog.ir/post/21/)