CREATE TRIGGER <trigger_name> ON <View name>
[WITH ENCRYPTION]
INSTEAD OF DELETE | INSERT | UPDATE
AS <Các phát biểu T-sql>
Trong các phiên bản trước phiên bản 2000, bạn không thể dùng các lệnh Insert, Update, Delete để cập nhật dữ liệu trên View.
Trong phiên bản 2000, bạn có thể cập nhật dữ liệu trên một bảng nguồn của view bằng tên của view. Trường hợp bạn muốn dùng một lệnh, cập nhật trên nhiều bảng nguồn của view phải thì phải tạo trigger INSTEAD OF cho các view đó.
Không giống như AFTER triggers, chỉ có thể INSTEAD OF cho mỗi lệnh hoặc INSERT, hoặc UPDATE, hoặc DELETE. Các Trigger INSTEAD OF sẽ thực hiện trước các AFTER triggers đã cài đặt cho các Table
Ví dụ: Tạo view liệt kê danh sách đề tài và sinh viên thực hiện đề tài đó
CREATE VIEW vwSVDeTai
AS
SELECT A.MSDT, A.TENDT, B.MSSV, NULLIF(C.TENSV, NULL) As TENSV
FROM DETAI A INNER JOIN SV_DETAI B ON A.MSDT = B.MSDT
INNER JOIN SINHVIEN C ON B.MSSV = C.MSSV
Để thêm đề tài mới trong table DeTai và sinh viên thực hiện đề tài đó trong table SV_DeTai, thay vì thực hiện hai lệnh insert trên hai table, bạn có thể thực hiện 1 lệnh thông qua đối tượng view đã tạo.
INSERT vwSVDeTai(msdt, Tendt, mssv)
Values( 97014, 'Ma Hoa Du Lieu', '01th01')
Để làm được điều này, bạn phải tạo Trigger Instead Of Insert cho View
CREATE TRIGGER tgvwSVDeTai ON vwSVDeTai
INSTEAD OF INSERT
AS
If (Select Count(*) From Inserted) > 0
Begin
Insert detai(msdt, Tendt) Select A.msdt,A.tendt From Inserted A
Insert SV_detai(mssv,msdt) Select A.mssv,A.msdt From Inserted A
End