ورود

View Full Version : راهنمایی در مورد استفاده از Trigger



ali_general
چهارشنبه 09 مهر 1393, 14:11 عصر
با سلام

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

جدول Reception که شامل فیلد های نام ، نام خانوادگی و..( کلاً مشخصات ) و فیلدهایی بنام هزینه فنی و هزینه عمومی

جدول Recep_item که شامل مواردی مانند Test 1 ، ،Test 2 ... و همچنین فیلدی به نام هزینه Test

به ازاء insert که در جدول Reception انجام می پذیرد فرد یک شماره پذیرش (Reception ID ) میگیره و به ازاء هر شماره پذیرش می تواند چندین Insert در جدول Recep_item وجود داشته باشد.

OK?

حالا من میخوام با استفاده از Trigger بیام هزینه کل که شامل مجموع هزینه تست در جدول Recep_item + هزینه فنی + هزینه عمومی را محاسبه کنم و بدست بیاورم

فقط یاداوری می کنم به ازا هر Reception_ID در جدول اول چندین ROW در جدول دوم داریم و هر ROW در جدول دوم دارای یک هزینه است که مجموع هزینه تمامی ROW های مربوط به یک پذیرش + هزینه فنی و عمومی (در جدول اول) میشه هزینه کل من

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

pezhvakco
چهارشنبه 09 مهر 1393, 16:50 عصر
چرا عنوان تایپیک را نوشتید : راهنمایی در مورد استفاده از Trigger

این کار را با SP می توان انجام داد (این طور که من از نوشته های شما فهمیدم، SP بهترین گزینه است)


Select RecepID, Technical_Cost
,Public_Cost,
(Select Sum(Test_Fee) From Recep_Item Where Recep_Item.RecepID = Reception.RecepID) AS SumCost
From Reception Where RecepID = ?

ali_general
پنج شنبه 10 مهر 1393, 10:58 صبح
با سلام مجدد

آخه من تا حالا از Trigger استفاده نکردم و به من گفته شده حتماً از trigger استفاده کن

من میخوام با هر بار عمل insert در جدول دوم این محاسبه انجام شود
اگه میشه با Trigger واسم بنویسید
ممنون

ham3d1988
پنج شنبه 10 مهر 1393, 11:36 صبح
سلام چرا استفاده از تریگر برای انجام محاسبه
یه تریگر بنویس زمانی که داده ها توی جدول اصلی و فرعی Insert شد تریگر بیاد جمع هزینه ها رو محاسبه کنه و توی یه ستون مثل AllCost بریزه، اینطوری فک کنم بهتر باشه چون با این کار دیگه نیاز به محاسبات نداری.

CREATE TRIGGER [dbo].[TriggerName] ON [dbo].[UrTbl] after INSERT AS
BEGIN
SET NOCOUNT ON
declare @Technical_Cost bigint
declare @Public_Cost bigint
declare @OtherCost bigint
set @Technical_Cost=select Technical_Cost from inserted
set @Public_Cost=select Public_Cost from inserted
set @OtherCost=(Select Sum(Test_Fee) From Recep_Item Where Recep_Item.RecepID = Reception.RecepID)
Update Reception set AllCost=@Technical_Cost+@Public_Cost + @OtherCost
where Reception_ID=inserted.Reception_ID

END

ali_general
پنج شنبه 10 مهر 1393, 11:45 صبح
مرسی
فوق العاده است

امتحان میکنم خبر میدم

ali_general
شنبه 12 مهر 1393, 08:35 صبح
شرمنده یه سوال پیش پا افتاده

من Trigger نوشتم حالا با اجرا کردن بدون هیچ خطایی اجرا میشه ولی حالا چطور ذخیره کنم و ازش استفاده کنم؟ مگه مثله sp خودش نمیاد تو لیست ولی اجراش که می کنم نمیاد تو لیست Tigger ها
کار خاصی باید انجام بدم؟

ham3d1988
شنبه 12 مهر 1393, 10:03 صبح
از چه نسخه ای استفاده می کنید؟

ali_general
شنبه 12 مهر 1393, 10:41 صبح
از چه نسخه ای استفاده می کنید؟

والا SQL Server 2014 که فکر کنم نسخه 12 میشه

pezhvakco
شنبه 12 مهر 1393, 17:21 عصر
اجرا میشه ولی حالا چطور ذخیره کنم و ازش استفاده کنم؟ مگه مثله sp خودش نمیاد تو لیست ولی اجراش که می کنم نمیاد تو لیست Tigger ها
کار خاصی باید انجام بدم؟
ذخیره نمی خواهد .
اگر با برنامه Management Studio کار می کنید، یکبار که دستورات اجرا شود برای جدول مورد نظر ذخیره می شود .
پس از ان زیر شاخه Trigger ها نمایش داده می شود .