sql-server - 在 sql 视图上更新数据时更新第三个表
问题描述
我有这三个表:
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
解决方案
表中没有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;
推荐阅读
- r - 我们如何解决错误?bca 中的错误(f = ...:找不到函数“bca”
- android - NetworkStatsManager:querySummary 为不同的开始时间返回相同的数据
- tensorflow - 无法在 Google Colab 中读取 .7z 文件
- reactjs - 如何在 Redux 中将两个不同的 store 连接到同一个 action?
- php - 函数返回对象
- python - SQLAlchemy - 具有相同查询的不同列表计数?
- nginx - 为什么 yum 在 RHEL7 上的 yum 更新上重新创建默认的 nginx 配置文件?
- react-native-android - React Native Flatlist Scroll问题
- javascript - 如何发送角度以使其绑定到组件?
- android - 检查触摸外部按钮在回收视图中不起作用(setOnTouchListener)