ورود

View Full Version : سوال: سوال درباره Trigger



baran_mehr
چهارشنبه 03 تیر 1388, 22:11 عصر
سلام به همه دوستان
یه مشکلی با تریگر پیدا کردم:عصبانی++:
میخوام یه insert به جدول orders انجام بدم اما میخوام قبلش برسی کنه اگر این رکورد تو جدول customers نبود این کار رو انجام بده. تا یه حدودشو نوشتم اما قاطی کرد:ناراحت:

baran_mehr
پنج شنبه 04 تیر 1388, 13:08 عصر
دوستان من این تریگر رو رو جدول Orders نوشتم

CREATE TRIGGER t3 ON [dbo].[Orders]
FOR INSERT
AS
declare @v int
if exists (select * from dbo.Customers where fildeCode =@code)
begin
print 'code exists value'
rollback transaction
end

قاطی کـــــــــــــــردم اگر ممکنه کمک کنید:ناراحت:

pesar irooni
پنج شنبه 04 تیر 1388, 14:23 عصر
متغیر Code چیه؟ شما @v تعریف کردی ولی از @code استفاده کردی!!!!!!!!!!!!
ضمنا چرا ستون کد رو بصورت unique تعریف نمیکنی تا sql خودش این کار رو بکنه؟؟؟؟

baran_mehr
پنج شنبه 04 تیر 1388, 22:23 عصر
pesar irooni جان ببخشید اونجا یه اشتباه کوچولو بود به جای V@ شما همون Code@ رو در نظر بگیرید.
unique چی هست؟؟ من چندان اشنا نیستم!!

ASKaffash
شنبه 06 تیر 1388, 07:53 صبح
سلام
برای اینکار باید از تریگر Instead Of استفاده شود نه After

baran_mehr
شنبه 06 تیر 1388, 13:24 عصر
Instead Of برای اینکه قبل از انجام یکی از عملهای ورود و حذف و ویرایش دستورات تریگر انجام بشه؟؟
یه سوال:آیا rollback transaction باعث میشه عملی روی جدول انجام نشه و برگرده به حالت عادی؟؟

ASKaffash
شنبه 06 تیر 1388, 14:25 عصر
سلام
در تریگر از نوع Instead of اگر تحت شرایطی تصمیم بگیرید که عملیان درج و تصحیح و حذف انجام نشود کافیست هیچ کاری انجام نشود ولی اگر قصد دارید عملیات انجام شود باید دستور SQL را خودتان انجام دهید برای این منظور از جدول موقت Inserted یا deleted کمک میگیرید به نظر من صورت مسئله شما شبیه این موضوع است در ضمن متغیر @Code چگونه مقدار اولیه میگیرد

baran_mehr
شنبه 06 تیر 1388, 19:14 عصر
والا الان یه insert مینویسم که فقط کد رو اضافه کنه.
اما میخومام ببینم میشه یه insert کامل نوشت و قسمت مقدار کد رو به تریگر داد؟؟

ASKaffash
یک شنبه 07 تیر 1388, 08:41 صبح
سلام
به تریگر نمی توان پارامتر یا مقدار پاس داد با مفهوم تریگر در تضاد است مقدار ها را باید از جداول Inserted و deleted دریافت کرد برای اطلاع لطفا صفحه 54 جزوه پیوست را بخوانید
http://barnamenevis.org/forum/showthread.php?t=106494