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 اگر هم صدا زده شد کاری انجام ندهد
یه مشکلی در اجرای تریگر دارم ...
من برای اینکه از تمام عملیات 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 اگر هم صدا زده شد کاری انجام ندهد