Обновление третьей таблицы при обновлении данных в представлении SQL - PullRequest
0 голосов
/ 18 мая 2018

У меня есть три таблицы:

CREATE TABLE tblEmployee1  
(  
 Id int Primary Key,  
 Name nvarchar(30),  
 Gender nvarchar(10),  
 DepartmentId int  
) 

CREATE TABLE tblDepartment1  
(  
 DeptId int Primary Key,  
 DeptName nvarchar(20)  
)

CREATE TABLE tblEmployee  
(  
 Id int Primary Key,  
 Name nvarchar(30),  
 Gender nvarchar(10),  
 DepartmentId int,  
 DeptName nvarchar(20)
) 

Две из них объединены представлением:

Create view ViewEmployeeDetails1  
as  
Select Id, Name, Gender,DepartmentId, DeptName  
from tblEmployee1  
join tblDepartment1  
on tblEmployee1.DepartmentId = tblDepartment1.DeptId

Я создал триггер, чтобы при обновлении представлениятриггер данных запускается и обновляет третью таблицу (tblEmployee) с данными в представлении без дублирующейся записи.Отказ триггера, кажется, вставляет значения в tblEmployee при обновлении представления.Можете ли вы помочь мне с триггером, не знаю, где он будет работать. Мой триггер ниже Спасибо заранее.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[Update_Employee]
   ON  dbo.ViewEmployeeDetails1 
   INSTEAD OF UPDATE
AS 
BEGIN
insert into dbo.tblEmployee  
([Id], [Name], [Gender], [DepartmentId], [DeptName])

SELECT  i.[Id],i.[Name], i.[Gender], i.[DepartmentId], i.[DeptName] 

        FROM   dbo.ViewEmployeeDetails1  t
       INNER JOIN i
        ON t.Id = i.Id 
        WHERE i.Id IS  NOT NULL
end

1 Ответ

0 голосов
/ 18 мая 2018

В таблице нет DeptName, поэтому вы, вероятно, захотите:

insert into dbo.tblEmployee  ([Id], [Name], [Gender], [DepartmentId])
    SELECT  i.[Id], i.[Name], i.[Gender], i.[DepartmentId]
    FROM inserted i
    WHERE i.Id IS  NOT NULL
end;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...