به قسمت دوم آموزش دیدها در MySQL رسیدهایم. در این مطلب به بررسی محدودیتهای دیدها، الگوریتم دید و دیدهای قابل بروزرسانی خواهیم پرداخت. با ما در الفبایت همراه باشید.
توجه: اگر قسمت اول آموزش دیدها را مطالعه نکردهاید حتما از لینک زیر به قسمت اول مراجعه کنید.
قسمت اول: مفهوم دیدها
محدودیت دیدها چیست؟!
زمانی که دیدها را تعریف میکنیم اغلب دستورات مجاز در select مانند where و group by و… را میتوانیم بر روی آنها اعمال کنیم. اما دیدها در MySQL محدودیتهایی نیز دارند:
- نمیتوان دید موقت یا temporary ایجاد کرد. (برای اطلاعات بیشتر در رابطه با temporary به مقاله “نحوه ی کار کردن با جدول ها در MySQL” مراجعه کنید.)
- نمیتوان تریگر (triger) برای دید ایجاد کرد. (تریگرها را در آموزشهای بعدی مورد بررسی قرار خواهیم داد.)
- جدولهای پایهای باید وجود داشته باشند تا دید بر روی آنها پردازش کند. به عنوان مثال نمی توان پس از ساخت دید جدول پایه را drop کرد. (برای کسب اطلاعات بیشتردر رابطه با drop کردن جدول ها به مقاله “نحوه ی کار کردن با جدول ها در MySQL” مراجعه کنید.)
- دستور select در تعریف دید نمیتواند شامل موارد زیر باشد:
- ارجاع به جدول موقت (temporary)
- ارجاع به متغیر های تعریف شده توسط کاربر
الگوریتم دیدها در MySQL
این گزینه الگوریتمی برای پردازش دیدها تعیین میکند روش استفاده از آنها به شکل زیر است:
[crayon-662f7a30d7cea163700754/]- Undefined: اگر این گزینه انتخاب شود (که پیش فرض MySQL نیز می باشد) الگوریتم پردازش به عهده MySQL است.
- Merge: این الگوریتم باعث باعث میشود MySQL برای پردازش دستوری که به دید مراجعه میکند بخشهایی از تعریف دید را در بخشهای متناظر آن دستور ادغام کند و دستور ادغام شده را اجرا کند.
- Template: اگر این گزینه را انتخاب کنید دید قابل بروزرسانی نخواهد بود یعنی دید نمیتواند برای بروزرسانی جدول اصلی به کار رود.
دیدهای قابل بروزرسانی در MySQL:
اگر بتوان روی دیدها دستورات update و delete را اعمال کرد تا جدولهای اصلی تغییر کنند، دیدهای قابل بروزرسانی هستند.
شرط اصلی برای قابلیت بروزرسانی:
- بین سطرهای دید در جدولهای پایه ارتباط یک به یک برقرار باشد.
مثال: username کاربری با نام salmani را با کمک دید userview در جدول اصلی از بانک اطلاعاتی alefbyte تغییر دهید.
برای انجام این کار باید طبق دستورات زیر عمل کنید:
[crayon-662f7a30d7cf6329609959/]حال برای مشاهده اتفاقات افتاده، میتوانید با دو دستور زیر جدول و دید را مشاهده کنید:
[crayon-662f7a30d7cf9954295983/]نکته: دستور delete نیز مانند دستور update قابل استفاده میباشد.
لطفا نظرها و دیدگاههای خود را برای افزایش کیفیت پستهای بعدی با ما درمیان بگذارید.
منبع: سایت رسمی MySQL