成都巴黎都市:sql server 在一个触发器里判断是哪种触发器!!!

来源:百度文库 编辑:神马品牌网 时间:2024/05/07 03:10:07
一般的如果写触发器要单着写,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
大概就这样吧,你自己看看,好象不太好实现啊。

用传进来的参数控制啊!!
具体情况具体分析吧
create proc proc1
(
@a int
)
if @a=''
begin
insert******
end
else
begin
if @a=''
begin
delete***
end
else
update ****
end
end