آموزش SQl server-جلسه هشتم
خدمت همه دوستان عزیز باید بگم که این آخرین قسمت آموزش Sql server هست و بعد ازاین دیگه میتونیم آموزش Visual Studio.net رو شروع کنیم.
دستور raiserror در تریگرها
توسط این دستور یک پیغام خطا تولید میشود که در جدول sys_message در بانک اطلاعاتی master (جدول پیغام های سیستمی ) ذخیره می شود.
روش استفاده :
(حالت ،شدت،”متن خطا “)raiserror
متن خطا:یا متن یا شماره پیغامی از پیغام های سیستمی که در جدول پیغام های سیستمی ذخیره شده
شدت:عددی بین ۱ تا ۲۵ برای پیام هایی که خودمان پیاده می کنیم می توانیم یک عدد بین ۱ تا ۱۸ بدهیم
حالت: عددی است بین ۱ تا ۱۲۷ که اطلاعاتی راجع به حالت خطا را نگه می دارد
تابع()update در تریگر
در ازای عملیات های insert و update یک مقدار بولین برمی گرداند که اگر true باشد یعنی آن ستون تغییر کرده است.
روش استفاده:
… (نام ستون یا فیلد)if update
نکته :این تابع فقط در بدنه تریگر ها استفاده می شود.
مثال: تریگری بنویسید که اجازه ندهد فیلد نام تغییر کند.
create trigger name_std
on student
after upfate , insert
as
(if update (std_name
begin
(raiserror(“you can not change name”,10,2
rollback
end
مفهوم جداول deleted ,inserted
دستورات DML که باعث اجرای تریگر می شودبا ۲ جدول موقت inserted و deleted کار می کند که این دو جدول به صورت اتوماتیک ایجاد و مقدار دهی می شوند ما می توانیم از این جداول برای تست کردن عملیات های DML قبل از اعمال روی جداول استفاده کنیم.
در جدول deleted یک نسخه از تمام رکورد های حذف شده در اثر دستورات delete یا update را نگه می دارد و جدول inserted یک نسخه از تمام رکورد های جدید اضافه شده بر اثر عملیات های insert , update را نگه می دارد دقت کنید که عمل update هردو جدول را مقدار دهی می کند.
ما از طریق نوشتن دستورات join جداول موقت را با جداول اصلی می توانیم مقادیری را که قبلا حذف شده بود یا تازه درج شده را ببینم:
مثال:تریگری بنویسید که بعد از عملیات درج رکورد های درج شده جدید جدول insert را نمایش دهد.
create trigger inset_trigger
on student
for insert
as
select student.std_num ,inserted.std_num
from inserted,student
where student.std_num=inserted.std_num
تابع drop برای حذف تریگر
نام تریگر drop trigger
تابع alter برای تغییر تریگر
نام تریگری که میخواهیم تغییر بدهیم alter trigger
نام جدول on
….. for
…..as
یکی از موارد on,forیا as تغییر می کند.
موفق باشید