PDA

View Full Version : ممانعت از Update یا Insert



MShirzadi
یک شنبه 04 شهریور 1386, 06:42 صبح
من می خوام یه Trigger بنویسم که زمانی که کاربر یک رکوزد را Add کرد یه چزی را کنترل کند که اگر آن غلط بود این رکورد Update نشود و به کاربر پیام خطا بدهد یعنی مثل خود SQL Server که به فرض مثال یه فیلد که Is Null نیست رو خالی می زاریم و به ما خطا می ده
آیا راهی برای بوجود آوردن این خطا هست؟؟

AminSobati
یک شنبه 04 شهریور 1386, 13:07 عصر
دوست عزیزم Trigger برای همین منظوره، مشکل کجاست؟



CREATE Trigger TriggerName ON MyTable AFTER INSERT,UPDATE
AS
--Do your checking here...
GO

رها
یک شنبه 04 شهریور 1386, 13:09 عصر
به نظرم trigger بعد از اجرای دستورات insert و update روی جدول اجرا می شه و کار شما رو واسه انجام کاری که می خواهید انجام بدید سخت تر می کنه.
چرا واسه اینکار از stored procedure استفاده نمی کنی؟ خیلی راحت می شه ورودی ها رو چک کرد و در صورت صحت عملیات رو انجام داد.

hossein taghi zadeh
یک شنبه 04 شهریور 1386, 19:11 عصر
با سلام

از تریگر استفاده کنید.
از جدول Deleted و Inserted در تریگر Update و از جدول Inserted در تریگر Insert استفاده کنید.
در ضمن حتما" از INSTEAD OF استفاده کنید تا به جای Insert یا Update تریگر شما اجرا شود.


CREATE Trigger TriggerName ON MyTable INSTEAD OF INSERT,UPDATE
AS
--Do your checking here...
GO

MShirzadi
دوشنبه 05 شهریور 1386, 12:39 عصر
دوستان من ظاهرا منظورم را بد عنوان کردم ببینید :
من یک تریگر نوشته ام روی یک Tableو یک رکورد که کاربر اون رو Insert کرده رو کنترل می کنه و تشخبص می ده که این رکورد نباید Update بشه حالا من می خوام که کاربر با یک پیام خطا از Update نشدن این رکورد باخبر بشه یعنی اگر با برنامه ای داشت این کار رو می کرد برنامه یک خطا بهش بده با متنی که من به اون پاس میدم مثل خود SQL Server که مثلا موقعی که یه فیلدIS Not Null رو خالی می زاریم و می خوایم Update کنیم به ما خطا می ده

ممنون

MShirzadi
سه شنبه 06 شهریور 1386, 03:51 صبح
کسی در این مورد چیزی نمی دونه؟؟؟؟؟؟؟؟؟
یا اصلا چنین مقوله ای نداریم تا کسی بدونه؟؟
لطفا نظر بدید !!

AminSobati
چهارشنبه 07 شهریور 1386, 10:16 صبح
شما در Trigger میتونین غیر از Rollback کردن، خطای دلخواه رو هم Raise کنین:


RAISERROR (N'مقدار این فیلد قابل ویرایش نیست',16,1)