sql触发器:A表与B表的结构完全相同,把A表的增删改操作全都反映到B表中,即结果要求B表是A表的一个副本

usernamegaorn 2009-01-04 05:56:40
sql触发器:A表与B表的结构完全相同,把A表的增删改操作全都反映到B表中,即结果要求B表是A表的一个副本。
请问该触发器怎么写?谢
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
-晴天 2009-01-04
  • 打赏
  • 举报
回复
有个错误,updatetableB触发器上的插入操作命令写错了,自己纠正一下吧.
dawugui 2009-01-04
  • 打赏
  • 举报
回复
--触发器的操作1

create table 化验室纱组(本厂编号 int,客户 int,色号 int,纱支 int)
create table 化验室布组(本厂编号 int,客户 int,色号 int,布类 int)
go
create trigger my_trig on 化验室纱组 for insert ,update ,delete
as
if not exists(select 1 from inserted)
delete 化验室布组 from deleted t where 化验室布组.本厂编号 = t.本厂编号
else if not exists(select 1 from deleted)
insert into 化验室布组(本厂编号 ,客户 ,色号) select 本厂编号 ,客户 ,色号 from inserted
else
update 化验室布组 set 客户 = t.客户 , 色号 = t.色号 from inserted t where 化验室布组.本厂编号 = t.本厂编号
go

--1、insert 对化验室纱组插入数据,然后查看化验室布组表的数据
insert into 化验室纱组 values(1 , 2 , 3 , 4)
insert into 化验室纱组 values(5 , 6 , 7 , 8)
go
select * from 化验室布组
/*
本厂编号 客户 色号 布类
----------- ----------- ----------- -----------
1 2 3 NULL
5 6 7 NULL

(所影响的行数为 2 行)
*/

--2、update , 更改化验室纱组表中本厂编号=1的色号=6
update 化验室纱组 set 色号 = 6 where 本厂编号 = 1
go
select * from 化验室布组
/*
本厂编号 客户 色号 布类
----------- ----------- ----------- -----------
1 2 6 NULL
5 6 7 NULL

(所影响的行数为 2 行)
*/

--3、delete 化验室纱组表中本厂编号=1的那条数据
delete from 化验室纱组 where 本厂编号 = 1
go
select * from 化验室布组
/*
本厂编号 客户 色号 布类
----------- ----------- ----------- -----------
5 6 7 NULL

(所影响的行数为 1 行)
*/

drop table 化验室纱组 , 化验室布组
-晴天 2009-01-04
  • 打赏
  • 举报
回复
create trigger inserttableB
on tableA
after insert
insert into tableB select * from inserted
go
create trigger updatetableB
on tableA
after update
delete from tableB where id in (select id from deleted)
inert into tableB select * from inserted
go
create trigger deletetableB
on tableA
after delete
delete from tableB where id in (select id from deleted)
go
--需要注意的是,tableB表的id不能为自增列.
usernamegaorn 2009-01-04
  • 打赏
  • 举报
回复
表结构:StudentInfo(id,StudentName,Sex,Age),表UserInfo结构与它相同。
要求当通过界面给表StudentInfo增加行记录时,表UserInfo也同样增加这样一条记录;
...........................修改........................修改..........;
...........................删除........................删除..........。
这样做的目的是,A应用系统只能对表StudentInfo进行增删改操作,而B应用系统只能对表UserInfo进行增删改操作。
水族杰纶 2009-01-04
  • 打赏
  • 举报
回复
给出表结构

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧