PDA

View Full Version : استفاده از trigger در SQL



Yanehsar
جمعه 04 مهر 1393, 12:11 عصر
سلام میخوام بعد عملیات اینسرت روی جدول Doctor ایدی دکتر و دو فیلد دیگر رو در Remaining درج کنم تریگر زیر رو نوشتم اما درج نمیشه !!!! میشه بگید اشکال کار چیه ؟



USE [New_karaneh]
GO
/****** Object: Trigger [dbo].[insertindoctors] Script Date: 09/26/2014 11:44:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[insertindoctors]
on [dbo].[T_Doctors]
after INSERT
AS
BEGIN
declare @IDdoctors int,@Remaining int,@Note nvarchar(50);

set @IDdoctors=(select IDDoctors from inserted)
set @Remaining=0
set @Note='Auto insertet'


insert into [dbo].T_Remaining(IDDrs,Remaining,Note)values(@IDdoctor s,@Remaining,@Note)
end

mohammad reza beizavi
جمعه 04 مهر 1393, 12:23 عصر
درود
trigger ی که نوشتی مشکلی نداره
پیام خطای خاصی میده؟؟؟
یه رکورد توی خود جدول ثبت کن ببین چی میگه، درج میشه یا نه؟؟؟

Yanehsar
جمعه 04 مهر 1393, 13:04 عصر
درود
trigger ی که نوشتی مشکلی نداره
پیام خطای خاصی میده؟؟؟
یه رکورد توی خود جدول ثبت کن ببین چی میگه، درج میشه یا نه؟؟؟
نه این خطا رو میاره فقط این نکته رو هم بگم که فیلد id هم داره که به صورت autonumber هستش منم داخل تریگر نیاوردمش
123915

mohammad reza beizavi
جمعه 04 مهر 1393, 16:34 عصر
ساختار جداولت رو نمیدونم چجوری هستن
اما این جا داره میگه که توی ستون Primary key در جدول T_Remaining نمیشه مقدار تکراری وارد کرد و شما دارید سعی می کنید اینکار رو انجام بدید.
این رو درست کنید مشکل حله. ببینید PK این جدول چیه و شما دارید چه مقداری رو بهش میدید.

Yanehsar
جمعه 04 مهر 1393, 18:17 عصر
ساختار جداولت رو نمیدونم چجوری هستن
اما این جا داره میگه که توی ستون Primary key در جدول T_Remaining نمیشه مقدار تکراری وارد کرد و شما دارید سعی می کنید اینکار رو انجام بدید.
این رو درست کنید مشکل حله. ببینید PK این جدول چیه و شما دارید چه مقداری رو بهش میدید.
داخل جدول T_Remaining هیچ اطلاعاتی ندارم !!! pk منم همون IDDoctors هستش که داخل جدول doctors هم pk هستش.
هدف از نوشتن این تریگر اینه که با اضافه کردن هر دکتر بیادش داخل جدول بدهی دکتر رو 0 تومان بدهکار کنه که میشه جدول بدهکاران من ! که ادامه برنامه اون مبلغ رو دستکاری می کنم .
این ساختار 2 تا جدولم
123923

mohammad reza beizavi
جمعه 04 مهر 1393, 18:28 عصر
من این جداول رو ساختم، trigger رو هم نوشتم مشکلی نداره
فقط یه مورد، IDDrs داخل T_Remaining آی دی دکتره، درسته؟ چرا توی T_Remaining هم گذاشتیش PK ؟؟؟
اگر نیازی به خود ID این جدول نداری که پاکش کن اگرم هردوشون رو نیاز داری موقع Insert کردن داخل همین trigger چک کن که اگه IDDrs توی T_Remaining وجود داره به جاش Update کن.

اگر دیتابیست رو با همین دوتا جدول بذاری که با دیتا هاش باشه و البته trigger میشه چک کرد کاملتر توضیح داد

Yanehsar
جمعه 04 مهر 1393, 19:29 عصر
مرسی درست شدش
در مورد iddrs باید بگم که می خوام از هر دکتر یک رکورد داخلش قرار بگیره ولی در مورد ID حق با شماست باید پاکش کنم