Sql Server 触发器问题,触发器触发的条件有 insert,update,delete ,我想要一个例子 在一个表建立一个触

触发器触发的条件有 insert,update,delete ,我想要一个例子 在一个表建立一个触发器在所有条件都会触发,当新增时 执行同步 insert 到另外一张表,update 时更新,delete 时也对应删除
例如表a,b
create table a (a varchar(10));

create table b (a varchar(10));

create trigger tr_a
on a
for insert,update,delere as
begin

end
请帮忙将上面代码补充完整,谢!
除了inserted 表跟deleted表有没有其他方法可以知道当时是执行哪类操作么?
如oracle 里面用INSERTING、DELETING、UPDATING谓词来区别不同的DML操作可以判断当时执行什么操作写对应sql

第1个回答  推荐于2016-08-02
create trigger tr_a
on a
for insert,update,delere as
begin

IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 插入触发.
INSERT INTO B
SELECT
inserted.a
FROM
inserted;
END;

IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 更新触发.
DELETE FROM B WHERE a in ( SELECT a FROM deleted);

INSERT INTO B
SELECT
inserted.a
FROM
inserted;
END;

IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 删除触发
DELETE FROM B WHERE a in ( SELECT a FROM deleted);

END;

end

参考资料:http://hi.baidu.com/wangzhiqing999/blog/item/6a325cbb7601cf1f18d81f60.html

本回答被提问者采纳
第2个回答  2011-08-03
declare @tmp varchar(10)
select @temp=a from inserted
insert b values(@tmp)

SQL Server触发器的基本语法和使用方法
1. 创建触发器,当向 Orders 表插入新记录时,自动更新 Customers 表中的订单数量。2. 创建触发器,当从 Products 表中删除商品时,自动删除 OrderDetails 表中相关的订单详情。3. 在 Employees 表中更新职位时,触发器自动向 AuditLog 表记录修改日志,通过查询 AuditLog 表跟踪职位修改历史。本文介绍...

求教sql server2000触发器,更新、修改、删除一个表,库存自动增减的写法...
--如果数据不存在,先插入 INSERT INTO 库存 SELECT @ProductCode,0 WHERE NOT EXISTS (SELECT 1 FROM 库存 WHERE 商品代码=@ProductCode )--更新数量 UPDATE 库存 SET 数量=数量-ISNULL(@OldInNum,0)+ISNULL(@NewInNum,0)+ISNULL(@OldOutNum,0)-ISNULL(@NewOutNum)WHERE 商品代码=@Produ...

Sql触发器
一个Update 的过程可以看作为:生成新的记录到Inserted表,复制旧的记录到Deleted表,然后删除Student记录并写入新纪录。对于2,创建一个Delete触发器 Create trigger trdStudent On Student for Delete As Delete BorrowRecord From BorrowRecord br , Delted d Where br.StudentID=d.StudentID 从这两个...

SQL Server触发器的基本语法和使用方法
要创建触发器,首先使用CREATE TRIGGER语句,包括触发器名称(如trigger_name)、事件类型(BEFORE或AFTER)、触发事件(INSERT、UPDATE或DELETE)、关联的表名(table_name)以及可选的FOR EACH ROW参数。基本语法如下:触发器名(trigger_name):命名触发器,用于引用。 事件类型:BEFORE或AFTER,定义触发...

SQL中触发器的触发类型有哪几种?
SQL SERVER中触发器的触发类型有三种。1、DML触发器,当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果对该表写了对应的DML触发器,那么该触发器自动执行。2、DDL触发器,是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改...

怎样在SQL视图里面些写触发器(inserrt、update、delete)?基本语法是...
instead of insert as insert into 表A select Aid,Bid,c1 from inserted insert into 表B select Bid,c2 from inserted 在vw1视图上建立update触发器:create trigger tr2 on vw1 instead of update as update 表A set Aid=a.Aid,Bid=a.Bid,c1=a.c1 from (select i.Aid,i.Bid,i.c1,i....

在Sql Server触发器中判断操作是Insert还是Update还是Delete
create trigger Update_Del on Table for update,delete as if not exists(select 1 from inserted)begin \/*inserted表无记录,是删除*\/ end else begin \/*是更新*\/ end go 关键在于Inserted表 触发器语句中使用了两种特殊的表:deleted 表和 inserted 表。Deleted 表用于存储 DELETE 和 UPDATE 语句...

有关sql insert触发器和update触发器
1, insert触发器;2, update触发器;3, delete触发器;触发器的组成部分: 触发器的声明,指定触发器定时,事件,表名以类型 触发器的执行,PL\/SQL块或对过程的调用 触发器的限制条件,通过where子句实现类型: 应用程序触发器,前台开发工具提供的; 数据库触发器,定义在数据库内部由某种条件引发;分为: DML触发器; ...

SQL。。server级触发器代码问题。。高手》》
Transact-SQL 参考 CREATE TRIGGER创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft® SQL Server™ 允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。语法CREATE TRIGGER trigger_name ON { table | view } [ WITH ENCRYPTION ] { { {...

数字电路常用的触发器有哪些?3个空
SQL Server 有三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。DML触发器,当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行;DDL触发器,它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,...

相似回答