【发布时间】:2011-06-23 17:45:16
【问题描述】:
当新数据插入到 BASETABLE 中时,我希望它使 View (InsteadView) 的触发器将数据插入到不同的表中。它仅在我将数据手动插入视图时有效,但在我将数据插入基表时无效。
CREATE TABLE BaseTable
(PrimaryKey int PRIMARY KEY IDENTITY(1,1),
Color nvarchar(10) NOT NULL,
Material nvarchar(10) NOT NULL,
ComputedCol AS (Color + Material)
)
GO
--Create a view that contains all columns from the base table.
CREATE VIEW InsteadView
AS SELECT PrimaryKey, Color, Material, ComputedCol
FROM BaseTable
GO
--Create an INSTEAD OF INSERT trigger on the view.
CREATE TRIGGER InsteadTrigger on InsteadView
INSTEAD OF INSERT
AS
BEGIN
--Build an INSERT statement ignoring inserted.PrimaryKey and
--inserted.ComputedCol.
INSERT INTO anotherTable
SELECT Color, Material
FROM inserted
END
GO
插入基表(颜色, 材料) 值(N'Red',N'Cloth')
--查看INSERT语句的结果。 选择主键、颜色、 Material, ComputedCol FROM another table
【问题讨论】:
-
观点是什么?
-
这是一个简单的例子。真实视图由 15 个表组成。如果我能做到这一点,它将帮助我解决真正的问题。
标签: sql database view triggers insert