INSTEAD OF UPDATE trigger on a view : Trigger on view « Trigger « SQL Server / T-SQL Tutorial






2>
3>
4> CREATE TABLE Customers (
5>      CustomerID nchar (5) NOT NULL ,
6>      CompanyName nvarchar (40) NOT NULL ,
7>      ContactName nvarchar (30) NULL ,
8>      ContactTitle nvarchar (30) NULL ,
9>      Address nvarchar (60) NULL ,
10>     City nvarchar (15) NULL ,
11>     Region nvarchar (15) NULL ,
12>     PostalCode nvarchar (10) NULL ,
13>     Country nvarchar (15) NULL ,
14>     Phone nvarchar (24) NULL ,
15>     Fax nvarchar (24) NULL
16> )
17> GO
1>
2> INSERT Customers VALUES('1','A','Maria',    'Sales',  'Str. 57', 'Berlin'    ,NULL,'12209', 'Germany','111-1111111','111-1111111')
3> INSERT Customers VALUES('2','M','Joe',      'Owner',  'Ave. 231','Vancouver' ,NULL,'05023', 'Mexico', '(222) 222-3332',NULL)
4> INSERT Customers VALUES('3','H','Thomas',   'Sales',  'Sq.  111','London'    ,NULL,'1D00P', 'UK',     '(444) 444-4444','(444) 444-4444')
5> INSERT Customers VALUES('4','B','Berg',     'Order',  'Blv    8','Toronto'   ,NULL,'00222', 'Sweden', '4444-55 55 65','5555-55 55 55')
6> INSERT Customers VALUES('5','S','Moos',     'Sales',  'Fort  57','New York'  ,NULL,'68306', 'Germany','6666-66666','6666-77777')
7> INSERT Customers VALUES('6','F','Cite',     'Manager','24      ','Dalles'    ,NULL,'67000', 'France', '88.60.15.31','88.60.15.32')
8> INSERT Customers VALUES('7','C','Sommer',   'Owner',  'Araq, 67','Paris'     ,NULL,'28023', 'Spain',  '(91) 555 22 82','(91) 555 91 99')
9> INSERT Customers VALUES('8','P','Leb',      'Owner',  '12      ','Beijing'   ,NULL,'13008', 'France', '91.24.45.40','91.24.45.41')
10> INSERT Customers VALUES('9','D','Elizabeth','Manager','23 Blvd.','Tsawassen','BC', 'T2F8M4','Canada', '(604) 555-4729','(604) 555-3745')
11> go

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)

(1 rows affected)
1>
2>    CREATE VIEW CustomerOrders_vw
3>    WITH SCHEMABINDING
4>    AS
5>    SELECT   cu.CompanyName
6>    FROM     dbo.Customers  AS cu
7>    GO
1>
2>
3>
4>
5>    create TRIGGER trCustomerOrderUpdate ON CustomerOrders_vw
6>    INSTEAD OF UPDATE
7>    AS
8>    BEGIN
9>        IF (SELECT COUNT(*) FROM Inserted) > 0
10>        BEGIN
11>            IF (COLUMNS_UPDATED() | 96) != 96
12>            BEGIN
13>                RAISERROR('Updates only supported for UnitPrice and Quantity', 16,1)
14>            END
15>            ELSE BEGIN
16>                RAISERROR('again', 16,1)
17>
18>            END
19>        END
20>    END
21> GO
1> drop TRIGGER trCustomerOrderUpdate;
2> drop view CustomerOrders_vw;
3> drop table Customers;
4> GO








22.9.Trigger on view
22.9.1.INSTEAD OF INSERT on a view
22.9.2.CREATE INSTEAD OF DELETE TRIGGER ON a view
22.9.3.INSTEAD OF UPDATE trigger on a view