我使用SQL Server 2012的差异在创建视图上的SQL Server触发器
视图定义是:
create view dbo.emp
as
select
e.eid, e.enm, p.fnm, p.lnm
from
employee e
inner join
person p on e.eid = p.id
go
第一个触发器的定义是:
CREATE trigger emptrgg on emp
instead of insert
as
begin
insert into person(id, fnm, lnm)
select
id, fnm, lnm
from inserted
insert into employee(eid, enm)
select
eid, enm
from inserted
end
触发#2(与触发#1相同,但是通过参数插入值)
CREATE TRIGGER emptrgg
ON emp
INSTEAD OF INSERT
AS
BEGIN
DECLARE @ID INT, @FName NVARCHAR(25), @LName NVARCHAR(25), @PID INT,
@EmNum NVARCHAR(15)
SELECT @ID = eid, @FName =fnm, @LName = lnm
FROM inserted
INSERT INTO Person(Id, fnm, lnm)
VALUES(@ID, @FName, @LName)
INSERT INTO Employee(eid, enm)
VALUES(@PID, @ENum)
end
以上哪一项效率高或性能好?
我不能找到,你能帮我吗?
关于, Chio。
如果向视图中插入多条单条记录,触发器2将无法正常工作。看着风格,我会说你从很多来源copypasted;) – Arvo