急询,这样的触发器该怎么写???
第一个表:模块表
moduleid modulename
M001 模块一
M002 模块二
第二个表:角色表
roleid rolename
R001 角色一
R002 角色二
第三个表:权限分配表
roleid moduleid browse add edit delete
R001 M001 0 0 0 0
R002 M001 0 0 0 0
R001 M002 0 0 0 0
R002 M002 0 0 0 0
我想分别在模块表和角色表上设置一个触发器,当往模块表或者角色表里面插入一条记录的时候就在权限分配表里插入n条记录。
比如说往模块表里插入M003则触发器在权限分配表里插入了
R001 M003 0 0 0 0
R002 M003 0 0 0 0
如果往角色表里插入记录也是类似的情况。
请问这样的触发器该怎么写!!
------解决方案--------------------create table A(moduleid varchar(20), modulename varchar(20))
insert A select 'M001 ', '模块一 '
union all select 'M002 ', '模块二 '
create table B(roleid varchar(20), rolename varchar(20))
insert B select 'R001 ', '角色一 '
union all select 'R002 ', '角色二 '
create table C(roleid varchar(20), moduleid varchar(20), [browse] bit, [add] bit, edit bit, [delete] bit)
insert C select 'R001 ', 'M001 ', 0, 0, 0, 0
union all select 'R002 ', 'M001 ', 0, 0, 0, 0
union all select 'R001 ', 'M002 ', 0, 0, 0, 0
union all select 'R002 ', 'M002 ', 0, 0, 0, 0
create trigger tr_A_insert on A
for insert
as
declare @moduleid varchar(20)
select @moduleid=moduleid from inserted
insert C
select roleid, @moduleid, 0, 0, 0, 0 from B
go
create trigger tr_B_insert on B
for insert
as
declare @roleid varchar(20)
select @roleid=roleid from inserted
insert C
select @roleid, moduleid, 0, 0, 0, 0 from A
go
insert A
select 'M003 ', '模块三 '
select * from C
--result
roleid moduleid browse add edit delete
-------------------- -------------------- ------ ---- ---- ------
R001 M001 0 0 0 0
R002 M001 0 0 0 0
R001 M002 0 0 0 0
R002 M002 0 0 0 0
R001 M003 0 0