トリガーの代わりに複数のテーブルのビューを更新する方法の例を見つけようとしています。
つまり、このビューが選択する複数のテーブルを更新したいということです。
例が見つかりません。誰かがこれを行う方法を教えてくれれば、それは素晴らしいことです。
トリガーの代わりに複数のテーブルのビューを更新する方法の例を見つけようとしています。
つまり、このビューが選択する複数のテーブルを更新したいということです。
例が見つかりません。誰かがこれを行う方法を教えてくれれば、それは素晴らしいことです。
ここで SQLServer を使用していると仮定すると、単純化しすぎた例の 1 つになります。
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のデモです