34,873
社区成员
发帖
与我相关
我的任务
分享
--先更新后插入就可以了。
update table1
set 字段=@a
insert into table2 select @a
--如果怕出问题,就用事务,有错误就事务回滚。
create trigger 触发器名称 on 表名
after update
as
begin
(这里是你需要的操作)
end
go
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
create trigger t1_t2
on table1
after update
as
begin
insert into table2 select ... from inserted
end
go