更新一条记录后,自动在另外一张表里插入记录

ncufunk 2009-10-01 05:10:30
情况是这样:

我支撑的一系统中有些数据经常有问题,经常需要查查,然后一条一条记录的update 表中有问题的数据。

目前总公司的人要求每update一条记录,就必须同时些一条insert语句插入另外一张记录表,以记录update那张表的操作。

每次写了条update语句,还要另外写insert另外一张表,我觉得好麻烦,好像能有办法更新一条记录后,不需要手工再写

insert语句就自动插入另外一张表吧?是用触发器不?
...全文
282 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuangfang 2009-10-02
  • 打赏
  • 举报
回复
用一个id把他们关联起来,在这张表中进行的操作另一张表不就随着改动了吗
叶子 2009-10-01
  • 打赏
  • 举报
回复
触发器用不用都可以。

用的话就是1楼那样。
不用的话就是

--先更新后插入就可以了。
update table1
set 字段=@a

insert into table2 select @a

--如果怕出问题,就用事务,有错误就事务回滚。
navy887 2009-10-01
  • 打赏
  • 举报
回复
用触发器处理,在源表建触发器。
create trigger 触发器名称 on 表名
after update
as
begin
(这里是你需要的操作)
end
go
虫洞 2009-10-01
  • 打赏
  • 举报
回复
3、	Inserted与deleted表:系统中保存着Inserted与deleted两张临时表,都保存在高速缓存中,实际上就是事务日志的试图,他们与创建触发器的表有相同的结构。
在inserted表存着被INSERT与UPDATE语句影响的新数据行,deleted表存着被DELETE语句影响的新数据行。
(1)采用deleted表
/*删除学生信息的同时删除学生成绩表中的信息,并将删除信息记录到日志文件*/
CREATE TRIGGER tg_student_del
ON student
AFTER DELETE
AS
BEGIN
DELETE FROM result
WHERE student_id IN
(
SELECT id FROM deleted
)
--开始记录删除日志
INSERT INTO student_del_log
(sysdate,del_info,dml_user,student_id)
SELECT GETDATE(),'用户之行了删除操作',USER_NAME(),id
FROM DELETED
PRINT('用户运行了删除操作,将学生表格中的学生信息删除了')
END
GO

(2)采用视图
/*以student、result表格为基表创建视图query_std_rsl*/
CREATE VIEW query_std_rsl
AS
SELECT s.id ,r.student_id
FROM student s RIGHT OUTER JOIN
result r ON s.id=r.student_id
GO
/*在学生表格上创建名字为tg_student_result_del的触发器*/
CREATE TRIGGER tg_student_result_del
ON student
AFTER DELETE
AS
BEGIN
DELETE FROM result
WHERE student_id IN
(SELECT student_id FROM query_std_rsl
WHERE id IS NULL )
PRINT('你删除了学生的信息,其附带的学生成绩信息也被删除')
END
GO
7761098 2009-10-01
  • 打赏
  • 举报
回复

create trigger t1_t2
on table1
after update
as
begin
insert into table2 select ... from inserted
end
go

34,873

社区成员

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

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