استفاده از قابلیت CASCADE در UPDATEها و DELETEها

در اکثر مواقع برای حذف کردن و یا آپدیت کردن سطرها و سطرهای مرتبط در جدوال مربوطه از Stored Procedureها بهره می بریم ، ولی می توان این عملیات را توسط اعمال کردن CASCADE در Foreign Key Consraints انجام داد.

فرض کنید دو جدول به نام های dbo.Albums و dbo.Tracks داریم ، که به ترتیب حاوی لیست آلبوم ها و آهنگ هاست. همانطور که خودتان هم قطعا حدس زده اید dbo.Tracks دارای یک Foreign Key Constraint با ستونی مثلا به نام AlbumId به جدول dbo.Albums می باشد. حال اگر یک AlbumId در جدول Adbo.Albums آپدیت شود این آپدیت می بایستی روی تمامی آهنگ های جدول dbo.Tracks که دارای آن AlbumId بودند اعمال شود. این کار را می توانیم با قابلیتی به نام CASCADE به صورت خودکار انجام دهیم.

قابلیت CASCADE برای UPDATE و DELETE تعریف می شود و 4 حالت متفاوت نیز برای این قابلیت وجود دارد ،

SET NULL : این حالت باعث می شود تا ستون مربوطه پس از UPDATE/DELETE شدن مرجع آن به NULL تغییر مقدار دهد.
CASCADE : این حالت باعث می شود تا پس از UPDATE شدن مقدار مرجع ، مقدار ستون مربوطه نیز آپدیت شده و پس از حذف شدن نیز سطر مربوطه حذف خواهد شد.
SET Default : پس از اعمال UPDATE/DELETE در مقدار مرجع مقادیر مربوطه به مقدار Default آن ستون تغییر مقدار خواهند داد.
No Action : این حالت ، حالت پیش فرض می باشد ، یعنی با زدن UPDATE/DELETE اتفاقی نمی افتد و error خواهید گرفت.
به این مثال دقت کنید :

نرم افزار مدیریت فرایند ها , مدیریت فرایند , سامانه ساز , پنجره واحد  ,دولت الکترونیک , معماری سازمان ,  سیستم ساز

در مثال بالا AlbumId در جدول dbo.Tracks به AlbumId در جدول dbo.Albums اشاره می کند. دو حالت CASCADE تعریف شده است.
ON DELETE SET NULL : وقتی سطری از جدول dbo.Albums پاک می شود تمامی سطرهایی که آن Id را در جدول dbo.Tracks داشتند دارای Id NULL خواهند شد.
ON UPDATE CASCADE : وقتی یک AlbumId در جدول dbo.Albums آپدیت می شود تمام سطرهایی که در جدول dbo.Tracks آن Id را داشتند Idشان به Id جدید آپدیت خواهد شد.

نرم افزار کلیک ویو  ,آموزش کلیک ویو , هوش تجاری کلیک ویو ,  فیلم کلیک وی   , دانلود کلیک ویو

حال بیایید یک سطر از جدول dbo.Albums را آپدیت کنیم ،

آشنایی با مفاهیم داشبورد ساز

Result Set
(1 row(s) affected)
AlbumID Name TrackID Title AlbumID Duration
1 Death Magnetic 1 That Was Just Your Life 1 00:07:08
1 Death Magnetic 2 The End Of The Line 1 00:07:52
1 Death Magnetic 3 The Day That Never Comes 1 00:07:56
2 Master Of Puppets 4 Battery 2 00:05:12
(4 row(s) affected)

در مثال بالا دیدیم که AlbumId در جدول dbo.Tracks نیز به مقدار 2 آپدیت شد ، مقدار قبلی 4 بود

برای DELETE ،

نرم افزار هوش تجاری ,  داشبورد مدیران  , داشبورد مدیریتی  , گزارش ساز ,  نرم افزار داشبورد

Result Set
(1 row(s) affected)
AlbumID Name TrackID Title AlbumID Duration
NULL NULL 1 That Was Just Your Life NULL 00:07:08
NULL NULL 2 The End Of The Line NULL 00:07:52
NULL NULL 3 The Day That Never Comes NULL 00:07:56
2 Master Of Puppets 4 Battery 2 00:05:12
(4 row(s) affected)

در پایان برای اینکه ببینید کدام یک از Foreign Keyهای شما از قابلیت CASCADE استفاده می کنند می توانید از sys.foreign_keys بهره ببرید ،

ابزار گزارش گیری مدیران

منبع : نیک آموز

نرم افزار هوش تجاری , داشبورد مدیران , داشبورد مدیریتی , گزارش ساز , نرم افزار داشبورد

نرم افزار کلیک ویو ,آموزش کلیک ویو , هوش تجاری کلیک ویو , فیلم کلیک وی , دانلود کلیک ویو

نرم افزار مدیریت فرایند ها , مدیریت فرایند , سامانه ساز , پنجره واحد ,دولت الکترونیک , معماری سازمان , سیستم ساز

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.