我试图找到一个如何使用而不是触发器更新多个表上的视图的示例。
那就是我想更新这个视图从中选择的多个表。
我找不到任何例子。如果有人能告诉我如何做到这一点,那就太好了。
我试图找到一个如何使用而不是触发器更新多个表上的视图的示例。
那就是我想更新这个视图从中选择的多个表。
我找不到任何例子。如果有人能告诉我如何做到这一点,那就太好了。
假设您在这里使用 SQLServer 是一个过于简单的示例
CREATE TABLE persons
(personid int,
firstname varchar(32),
lastname varchar(32));
CREATE TABLE employees
(employeeid int,
personid int,
title varchar(32));
CREATE VIEW vwEmployees AS
SELECT p.personid, employeeid, firstname, lastname, title
FROM employees e JOIN persons p
ON e.personid = p.personid;
CREATE TRIGGER tgEmployeesInsert ON vwEmployees
INSTEAD OF INSERT AS
BEGIN
INSERT INTO persons (personid, firstname, lastname)
SELECT personid, firstname, lastname
FROM INSERTED
INSERT INTO employees (employeeid, personid, title)
SELECT employeeid, personid, title
FROM INSERTED
END;
INSERT INTO vwEmployees (personid, employeeid, firstname, lastname, title)
VALUES(1, 1, 'Jhon', 'Doe', 'SQL Developer');
注意:实际上,您肯定必须处理IDENTITY
列以及 SQL Server 中的触发器是语句而不是行范围的事实。
这是SQLFiddle演示