ورود

View Full Version : RAISERROR در تریگر



پرواز
شنبه 08 دی 1386, 22:14 عصر
با سلام،

یه تریگر رو یه جدول نوشتم (AFTER UPDATE) و تو اون اومدم گفتم اگه فلان شرط برقرار بود RAISERROR بکن.

حالا یه SP دارم که میاد رو اون جدول UPDATE انجام میده.

وقتی که از Application میام SP رو اجرا می کنم اون متن خطا برنمیگرده و موفقیت آمیز اجرا میشه در حالی که اگه همین کار رو تو Management Studio انجام بدم اون متنی که برا خطا نوشتم رو بهم نشون میده.

چیکارش میشه کرد؟

JAFO_IRAN
یک شنبه 09 دی 1386, 10:33 صبح
سلام

این تجربه‌ها رو در 2000 داشتم امیدوارم مفید باشند

1. RaisError ممکنه که خطای غیر critical هم تولید کنه - دو تا پارامتر داره که میزان جدی بودن رو معلوم میکنه - مقادیر 16 و 1 مناسب هستند.

2. پس از RaisError بهتره که با roll back tran مانع از به سرانجام رسیدن کار بشید - این از اینکه کار update در صورت وجود خطا انجام بشه ممانعت میکنه.

3. اگر توی تریگر کدهای دیگری دارید که نمیخواهید اجرا شوند هم لازم است پس از raise با return خارج بشید (مثل زبانهای سطح بالا نیست که در صورت exception عملیات رو متوقف کنه).

ارادت

پرواز
یک شنبه 09 دی 1386, 21:45 عصر
دوست عزیز از تجربیاتتون ممنونم. اینایی که شما گفتید انجام داده بودم. ولی خوب مشکل من رو مرتفع نمی کنه.