ورود

View Full Version : مشکل در تریگر



N_D
سه شنبه 22 شهریور 1384, 22:46 عصر
سلام دوستان
یه مشکلی در اجرای تریگر دارم ...
من برای اینکه از تمام عملیات update , insert , delete روی رکوردهای یک جدول Log تهیه کنم سه تریگر برای جدول PersonTable نوشتم .
برنامه با دلفی نوشته شده است و تمام عملیات برروی DBGrid انجام میگیرد زمانیکه در dbgrid یک سطر جدید Insert می کنم تریگر Insert با موفقیت انجام میگیرد
اما مشکل اینجاست زمانیکه دوباره روی همین سطر برمیگردم تا یک فیلد را Update کنم در کمال تعجب مشاهده میکنم که مجددا تریگر Insert صدا زده میشود
که در این حالت خطا رخ داده و عمل Update این فیلد با شکست مواجه میشود زیرا اصلا در این تریگر ، رکورد Inserted وجود ندارد


Create TRIGGER InsertLOG_PersonTable ON dbo.PersonTable
For INSERT
AS
begin
.
.
.
Select siPerson,PerName from Inserted - خطا در این خط رخ میدهد
.
.
.
end;

حال میخواهم کدی بنویسم که به SQL SERVER بگوید که کمپایلر اگر خطائی دید آنرا گزارش نکند تا حداقل در زمان Insert تریگر Insert صدا زده شود ولی در حالت update رکورد در dbgrid تریگر Insert اگر هم صدا زده شد کاری انجام ندهد

AminSobati
پنج شنبه 24 شهریور 1384, 20:35 عصر
دوست عزیزم،
زمانیکه Update انجام میدین، Inert Trigger اتفاق نمیافته. به نظر میرسه این نوعی رفتار از خود dbgrid در دلفی باشه و متاسفانه من در موردش اطلاعاتی ندارم. ولی بهتره توسط Profiler رد پای برنامه رو بگیرین تا ببینین دقیقا چه اتفاقی داره میافته و دقیقا چه دستوراتی از Client به SQL Server میرسه.

سید مسعود موحد
سه شنبه 17 آبان 1384, 10:12 صبح
دوست عزیز
Update‌در دلفی یعنی عملیات DELETE سپس INSERT‌ برای همین تریگر INSERT‌ شما اجرا میشود