Итак, мы создали представление, не позволяющее вставлять новые записи, поскольку в него не включено поле city, которое должно заполняться в таблице Customers. В следующей последовательности действий мы создадим триггер INSTEAD OF, который будет вставлять отсутствующее значение при выполнении вставки через представление.
Рис. 11. Попытка вставки клиента без указания города привела к ошибке
1. В окне Object Explorer раскройте папку Views=> PHX_Customers для базы данных Sales, щелкните правой кнопкой на папке Triggers и выберите команду New Trigger.
2. В строке CREATE TRIGGER введите имя триггера (Add_City), в строке ON введите имя представления (dbo. PHX_Customers).
3. Строку AFTER замените на INSTEAD OF INSERT.
4. В поле (--Insert statements for trigger here) введите следующий код триггера
8. Чтобы удостовериться во вставке данных в таблицу Customers с заполнением столбца city, выберите в меню Query=>New Query и выполните следующий
Рис. 12. Создание триггера INSTEAD OF для вставки отсутствующего значения.
запрос (рис. 13).
USE Sales
SELECT * FROM Customers
Рис. 13. С использованием триггера замены вставка клиента была выполнена успешно
9. Закройте окно запросов.
В первой последовательности действий мы создали представление, не отображающее столбец city. Затем мы попытались вставить с помощью представление PHX_Customers новую запись, что нам не удалось, поскольку мы не можем вставлять требуемое значение city в этом представлении. Далее мы создали триггер, который считывает из таблицы inserted все значения, требуемые для вставки, и сохраняет их в переменных памяти, а также создает переменную памяти для хранения отсутствующего значения city. После заполнения переменных памяти мы вставили запись в таблицу Customers, используя значения, хранящиеся в созданных нами переменных.