使用SQL Server INSERT INTO视图时忽略自定义字段

时间:2017-06-09 13:16:35

标签: sql-server

我创建了一个视图,这是一个SELECT *查询,其中包含来自表格的其他“计算”字段。

我有一个应用程序使用此视图来选择数据,并且可以使用此视图插入数据。 我无法告诉应用程序使用表而不是视图来生成INSERT,但SQL Server可以在视图上处理INSERT。

但是在这种情况下,在进行插入时,应用程序会自动附加视图的所有字段,以便在INSERT中添加它们。 因此,插入查询因计算字段中的INSERT而失败。

是否可以在视图中的INSERT上添加类似“侦听器”的内容,以忽略或删除INSERT查询中的某些字段?

由于

1 个答案:

答案 0 :(得分:0)

您可以实施INSTEAD OF INSERT TRIGGER。类似的东西:

CREATE VEW VW_YOUR_VIEW AS
    SELECT * FROM sys.objects
GO

CREATE TRIGGER TRG_INSERT_YOUR_VIEW ON VW_YOUR_VIEW
INSTEAD OF INSERT
BEGIN
    --Your Real Insert
    SELECT * FROM INSERTED
END

来源:https://technet.microsoft.com/en-us/library/ms175089(v=sql.105).aspx