Оновлення інформації за допомогою уявлень

Одним з найголовніших недоліків уявлень є те, що їх рідко можна використовувати для оновлення даних На практиці, якщо подання є чимось більшим, ніж простою інструкцією SELECT, велика ймовірність, що дані з його допомогою оновити буде неможливо

Будь-яка з наступних причин може зробити подання непридатним для оновлень

. Додаткова Насправді існують і інші стандартні потенційні труднощі, інформація повязані з оновленням і вставкою даних за допомогою уявлень У главі 16 ми поговоримо про них більш докладно

■ Оновлюватися може тільки одна таблиця Якщо подання використовує обєднання, то інструкція UPDATE, що посилається на подання, може оновити лише одну з таблиць

■ Тригер INSTEAD OF в додатку або таблиці, на яку то посилається, буде змінювати операцію модифікації даних Замість необхідного зміни даних буде виконаний код тригера

■ Підсумкові функції і угруповання, використовувані в поданні, унеможливлять оновлення Справа в тому, що SQL Server не зможе визначити, яку з рядків, які брали участь у консолідації, змінювати

■ Якщо подання в якості керованої таблиці використовує подзапрос, жоден із стовпців цієї таблиці не може брати участь у вихідних даних подання У той же час в підзапитах, що беруть участь в якості керованих таблиць, допускається консолідація

■ Якщо подання створено з використанням параметра WITH CHECK OPTION, то операції вставки і видалення повинні задовольняти умовами пропозиції WHERE

■ Імена видаляються і оновлюваних стовпців повинні бути унікальними Якщо одне й те ж імя зустрічається в кількох таблицях, на які посилається додаток, то імя таблиці має передувати імені стовпця (табліца стовпець)

Як ви вже побачили, створити неоновлювані уявлення вкрай просто Однак якщо проект використовує представлення для разових запитів і звітів, оновлення даних може виявитися проблематичним

Додаткова Існує один спосіб обійти неможливість поновлення в уявленнях, інформація Для цього потрібно створити тригер instead OF, який Інспектовані дан-^ ві, а потім виконує допустиму інструкцію update на основі цих даних У главі 23 ми обговоримо створення тригерів instead of

Альтернативи уявленням

Якщо ваш стиль програмування передбачає створення безлічі уявлень, то ця глава могла залишити у вас гнітюче враження На щастя, SQL Server 2005 пропонує кілька інших альтернатив

У деяких випадках збережені процедури і функції по продуктивності не можуть зрівнятися з уявленнями До того ж збережені процедури не пропонують звязування схеми (а воно часто потрібно), у той час як уявлення пропонують Водночас користувача функції обєднують досить високу швидкість, можливість введення параметрів і звязування схеми Якщо вам подобається створювати модульні інструкції SQL, такі як подання (як, зокрема, і мені), то вам сподобаються користувача функції

У розділах 18-25 ми докладно обговоримо Т-SQL, збережені процедури і функції

Якщо ви використовуєте вистави для підтримки разових запитів (що я і припускаю), то можете надати куби служби аналізу тим користувачам, яким потрібно виконувати складні дослідження даних Куби являють собою заздалегідь підготовлені підсумкові дані, які можна розглянути з різних точок зору (вони називаються вимірами) З точки зору розробника, створення одного куба часто замінює собою розробку кількох запитів або звітів

Детально про створення кубів ви дізнаєтеся в розділі 43

Питання продуктивності уявлень часто повязані з необхідністю блокування даних Нічого страшного в блокировках немає Якщо дані витягуються через подання та інструкція SELECT негайно виконується, то блокування відразу ж знімається Проблема виникає, коли користувачі відкривають все безліч даних в додатках, і ці дані залишаються відкритими протягом всієї сесії їх перегляду З цієї причини подання незаслужено отримали репутацію чорних дір блокування Насправді проблему створюють не самі уявлення, а програмний код або використовувані засоби Я вирішив написати цю невелику ремарку на захист уявлень і попередити про потенційну можливість зменшення продуктивності

Джерело: Нільсен, Пол Microsoft SQL Server 2005 Біблія користувача : Пер з англ – М: ООО ІД Вільямс , 2008 – 1232 с : Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*