Страницы

Поиск по вопросам

понедельник, 24 сентября 2018 г.

Обновляемое представление в SQL

Представления могут быть обновляемыми (updatable). В таких представлениях мы можем изменить или удалить строки или добавить в них новые строки.
При создании подобных представлений есть множество ограничений. В частности, команда SELECT в представлении не может содержать:
  • TOP
  • DISTINCT
  • UNION
  • JOIN
  • агрегатные функции типа COUNT или MAX
  • GROUP BY и HAVING
  • подзапросы
  • производные столбцы или столбцы, которые вычисляются на основании нескольких значений
  • обращения одновременно к нескольким таблицам
Допустим, у нас есть следующая таблица:
1
2
3
4
5
6
7
8
CREATE TABLE Products
(
    Id INT IDENTITY PRIMARY KEY,
    ProductName NVARCHAR(30) NOT NULL,
    Manufacturer NVARCHAR(20) NOT NULL,
    ProductCount INT DEFAULT 0,
    Price MONEY NOT NULL
)
И создадим обновляемое представление:
1
2
3
CREATE VIEW ProductView
AS SELECT ProductName AS Product, Manufacturer, Price
FROM Products
Добавим в него данные:
1
2
3
4
INSERT INTO ProductView (Product, Manufacturer, Price)
VALUES('Nokia 8', 'HDC Global', 18000)
SELECT * FROM ProductView
Обновляемое представление в T-SQL
Стоит отметить, что при добавлении фактически будет добавлен объект в таблицу Products, которую использует представление ProductView. И поэтому надо учитывать, что если в этой таблице есть какие-либо столбцы, в которые представление не добавляет данные, но которые не допускают значение NULL или не поддерживают значение по умолчанию, то добавление завершится с ошибкой.
Обновление строки представления:
1
2
UPDATE ProductView
SET Price= 15000 WHERE Product='Nokia 8'
Удаление строки в представлении:
1
2
DELETE FROM ProductView
WHERE Product='Nokia 8'
Обновление и удаление также затрагивают ту таблицу, которую использует представление.

Комментариев нет:

Отправить комментарий