sql server 在一个触发器里判断是哪种触发器!!!

一般的如果写触发器要单着写,insert一个,delete一个,update一个
如何在一个触发器里判断一个那种触发器,在写具体操作

CREATE TRIGGER trigger_t_Rm_login_user_update ON Rm_login_user
FOR UPDATE
AS
BEGIN
declare @loginuser char(20),@bz varchar(50),@logintime smalldatetime,@userstate char(1),@state_left char(8),@state_right char(8)

--对用户表操作
select @bz = '修改用户'
if update(user_state)
begin
DECLARE cur_id_U CURSOR FOR SELECT user_name, user_state FROM inserted
OPEN cur_id_U
FETCH cur_id_U INTO @loginuser,@userstate

if (@userstate='1')
begin
--对用户表操作的日期
select @logintime = getdate()

select @state_left='未激活'
select @state_right='激活'
insert into Rm_login_record (user_id,login_time,bz) values ('system',@logintime,'系统管理员'+@bz+ltrim(rtrim(@loginuser))+rtrim(@state_left)+'状态变成'+@state_right)
end
else
if (@userstate='0')
begin
--对用户表操作的日期
select @logintime = getdate()
select @state_left='未激活'
select @state_right='激活'

insert into Rm_login_record (user_id,login_time,bz) values ('system',@logintime,'系统管理员'+@bz+ltrim(rtrim(@loginuser))+rtrim(@state_right)+'状态变成'+@state_left)
end
end

CLOSE cur_id_U

--deallocate cursor cur_id
END

CREATE TRIGGER trigger_t_Rm_login_user_insert ON Rm_login_user
FOR INSERT
AS
BEGIN
declare @loginuser char(20),@bz varchar(50),@logintime smalldatetime

--对用户表操作
select @bz = '增加用户'
--对用户表操作的日期
select @logintime = getdate()

DECLARE cur_id_D CURSOR FOR SELECT user_name FROM inserted
OPEN cur_id_D
FETCH cur_id_D INTO @loginuser

insert into Rm_login_record (user_id,login_time,bz) values ('system',@logintime,'系统管理员'+@bz+ltrim(rtrim(@loginuser)))

CLOSE cur_id_D

--deallocate cursor cur_id
END

CREATE TRIGGER trigger_t_Rm_login_user_insert ON Rm_login_user
FOR INSERT
AS
BEGIN
declare @loginuser char(20),@bz varchar(50),@logintime smalldatetime

--对用户表操作
select @bz = '增加用户'
--对用户表操作的日期
select @logintime = getdate()

DECLARE cur_id_D CURSOR FOR SELECT user_name FROM inserted
OPEN cur_id_D
FETCH cur_id_D INTO @loginuser

insert into Rm_login_record (user_id,login_time,bz) values ('system',@logintime,'系统管理员'+@bz+ltrim(rtrim(@loginuser)))

CLOSE cur_id_D

--deallocate cursor cur_id
END

CREATE TRIGGER trigger_t_Rm_login_user_delete ON Rm_login_user
FOR DELETE
AS
BEGIN
declare @loginuser char(20),@bz varchar(50),@logintime smalldatetime

--对用户表操作
select @bz = '删除用户'
--对用户表操作的日期
select @logintime = getdate()

DECLARE cur_id_D CURSOR FOR SELECT user_name FROM deleted
OPEN cur_id_D
FETCH cur_id_D INTO @loginuser

insert into Rm_login_record (user_id,login_time,bz) values ('system',@logintime,'系统管理员'+@bz+ltrim(rtrim(@loginuser)))

CLOSE cur_id_D

--deallocate cursor cur_id
END
大概就这样吧,你自己看看,好象不太好实现啊。
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-05-25
用传进来的参数控制啊!!
具体情况具体分析吧
create proc proc1
(
@a int
)
if @a=''
begin
insert******
end
else
begin
if @a=''
begin
delete***
end
else
update ****
end
end

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

在Sql Server触发器中判断操作是Insert还是Update还是Delete
Inserted 表用于存储 INSERT 和 UPDATE 语句所影响的行的副本。在一个插入或更新事务处理中,新建行被同时添加到 inserted 表和触发器表中。Inserted 表中的行是触发器表中新行的副本。1.插入操作(Insert)Inserted表有数据,Deleted表无数据 2.删除操作(Delete)Inserted表无数据,Deleted表有数据 3....

SQL server中有哪几种触发器?
SQL Server 2000 支持两种类型的触发器:AFTER 触发器和INSTEAD OF 触发器。其中AFTER 触发器即为SQL Server 2000 版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(INSERT UPDATE DELETE) 之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER 触发器,...

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

如何知道一个触发器是什么触发器?
在数据被更新(update)前,触发器会把结果先记录到deleted表中,再记录到inserted表中 如上sql中在deleted表与inserted表中都能查询price字段数据,那么说明price字段记录是做过update操作,才能同时在deleted与inserted表中同时查询到的,故而也就判断该sql片段中的触发器应该会在update时触发。故而选B ...

sql server2008中的触发器有3种类型,分别为
(1)DML触发器:是指触发器在数据库中发生数据操作语言(DML)事件时将启用。DML事件即指在表或视图中修改数据的insert、update、delete语句也。(2)DDL触发器:是指当服务器或数据库中发生数据定义语言(DDL)事件时将启用。DDL事件即指在表或索引中的create、alter、drop语句也。(3)登陆触发器:是指当...

在Sql Server触发器中判断操作是Insert还是Update还是Delete
if exists(select 1 from inserted)begin if exists(select 1 from deleted) begin select @action = 'Update' end else begin select @action = 'Insert' endendelse if exists(select 1 from deleted)begin select @action = 'Delete'end ...

如何查看sql server是否有触发器
1、通过可视化操作来管理和查看触发器 在Microsoft SQL Server Management Studio中,选中某一数据库的某一张表时,在“对象资源管理器详细”窗口中有“触发器”项。通过“触发器”的右键菜单功能,我们可以新建触发器。如果原来的表中已经存在了触发器,通过双击“触发器”项可以查看到具体的触发器,在...

SQL SERVER如何应用DLL触发器
1、首先打开SQL SERVER 2008数据库管理工具,然后选择服务器,选择Windows身份验证进行连接,如下图所示 2、进入管理工具以后,定位要操作的数据库,然后点击新建查询,如下图所示 3、在新建查询界面中,通过create trigger语句创建DLL触发器,当进行数据库删除和修改的时候进行触发,如下图所示 4、语句编写...

SQL Server触发器的基本语法和使用方法
SQL Server数据库中的触发器是一种强大的工具,能在特定事件如数据插入、更新或删除时自动执行预设操作,对于数据的自动化管理和业务逻辑维护至关重要。要创建触发器,首先使用CREATE TRIGGER语句,包括触发器名称(如trigger_name)、事件类型(BEFORE或AFTER)、触发事件(INSERT、UPDATE或DELETE)、关联的表...

相似回答
大家正在搜