sql server 2005 写触发器 ,要求 A表中做了增删该, B 表将记录他的 操作信息!

假设A表数据结构为:idint主键namevarchar姓名B表为:idint记录A表IDstateintA表操作的方式有增删改(1,2,3状态),timedatetim... 假设 A表 数据结构为:
id int 主键
name varchar 姓名

B表 为:
id int 记录A表 ID
state int A表操作的方式 有增删改 (1,2,3 状态),
time datetime 执行时间

表A 中如有 ID 为 123 名字 为张三的人。此时 执行了 修改操作

于此同时 B 表 就需要 记录 张三的 ID 和 操作状态。 增删改 (1,2,3 状态),
还有执行时间, 都记录到B 表中去。

各位高手,多多请教这个触发器如何写?
展开
 我来答
许运来
2011-10-11 · 超过21用户采纳过TA的回答
知道答主
回答量:58
采纳率:0%
帮助的人:36.1万
展开全部
create trigger AfterA on A for
insert,update,delete
as
declare @id int;
begin
if exists(select 1 from inserted) and not exists (select 1 from deleted)
begin
insert into b select inserted.id,'1',getdate() from inserted
end
if exists(select 1 from inserted) and exists (select 1 from deleted)
begin
insert into b select inserted.id,'3',getdate() from inserted,deleted where inserted.id = deleted.id
end
if not exists(select 1 from inserted) and exists (select 1 from deleted)
begin
insert into b select deleted.id,'2',getdate() from deleted;
end
end
----1、2、3分别对应了增删改操作
wangzhiqing999
2011-10-11 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3299万
展开全部
SQLServer 简单的触发器的例子 - inserted 与 deleted的使用

这个例子,就是
A是主表
B是 日志表, 负责记录 A表 发生的变化。
的一个例子

和你的有点相像, 又有点差异.
你可以看看, 参考一下.

参考资料: http://hi.baidu.com/wangzhiqing999/blog/item/6a325cbb7601cf1f18d81f60.html

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zeom
2011-10-11 · TA获得超过174个赞
知道答主
回答量:144
采纳率:0%
帮助的人:105万
展开全部
给你个参考

//insert触发器
Create TRIGGER [dbo].[T_aa_insert] ON [dbo].[aa]
FOR INSERT
AS

DECLARE
@a1 varchar(20),
@a2 varchar(20),
@a3 varchar(20)

SELECT
@a1 = a1,
@a2 = a2,
@a3 = a3
FROM Inserted

insert into bb values(@a1,@a2,@a3);

//Delete触发器
Create TRIGGER [dbo].[T_aa_delete] ON [dbo].[aa]
FOR DELETE
AS
DECLARE
@a1 varchar(20),
@a2 varchar(20),
@a3 varchar(20)
SELECT
@a1 = a1,
@a2 = a2,
@a3 = a3
FROM deleted

delete from bb
where b1=@a1 and b2=@a2 and b3=@a3

//update触发器
Create TRIGGER [dbo].[T_aa_update] ON [dbo].[aa]
FOR UPDATE
AS

DECLARE
@INSa1 varchar(20),
@INSa2 varchar(20),
@INSa3 varchar(20)
SELECT
@INSa1 = a1,
@INSa2 = a2,
@INSa3 = a3
FROM inserted
DECLARE
@DELa1 varchar(20),
@DELa2 varchar(20),
@DELa3 varchar(20)
SELECT
@DELa1 = a1,
@DELa2 = a2,
@DELa3 = a3
FROM deleted

update bb set b1=@INSa1, b2=@INSa2, b3=@INSa3
where b1=@DELa1 and b2=@DELa2 and b3=@DELa3
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式