菜鸟问个触发器的问题

gaomiqzhi 2010-03-18 06:55:45
利用触发器能否知道哪条记录被修改?
...全文
98 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
milkman_nuaa 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 feixianxxx 的回复:]

可以。。
SQL code
create trigger tr_t on 你的表名
for update
as
begin
declare @n int
set @n=(select id from inserted )
print '你表中ID为'+rtrim(@n)+'已经修改了!!'
end
[/Quote]


UPUPUP
cxmcxm 2010-03-18
  • 打赏
  • 举报
回复
可以,在触发器中
修改记录时,旧的未修改的记录放于deleted表中
新的已修改的记录放于inserted表中,根据此两表与主键,可确定修改了那些记录,字段
feixianxxx 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gaomiqzhi 的回复:]
想保存这条记录在修改前的数据怎么写触发器
[/Quote]

create trigger tr_t on 你的表名
for update
as
begin
insert yourtable
select *
from deleted
end

流氓兔 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 feixianxxx 的回复:]
引用 6 楼 gaomiqzhi 的回复:
能否把被修改这条记录插入到另一个表里?

可以。。。

SQL code
create trigger tr_t on 你的表名
for update
as
begin
insert yourtable
select *
from inserted
end
[/Quote]
inserted更新之后的数据,Deleted更新之前的数据吧,update在底层应该是先DELETE在Insert
--小F-- 2010-03-18
  • 打赏
  • 举报
回复
gaomiqzhi 2010-03-18
  • 打赏
  • 举报
回复
想保存这条记录在修改前的数据怎么写触发器
nalnait 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用楼主 gaomiqzhi 的回复:]
利用触发器能否知道哪条记录被修改?
[/Quote]可以
feixianxxx 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gaomiqzhi 的回复:]
能否把被修改这条记录插入到另一个表里?
[/Quote]
可以。。。
create trigger tr_t on 你的表名
for update
as
begin
insert yourtable
select *
from inserted
end
gaomiqzhi 2010-03-18
  • 打赏
  • 举报
回复
能否把被修改这条记录插入到另一个表里?
东那个升 2010-03-18
  • 打赏
  • 举报
回复
可以不用触发器,用output ,联机帮助的例子

USE AdventureWorks;
GO
DECLARE @MyTableVar table(
EmpID int NOT NULL,
OldVacationHours int,
NewVacationHours int,
ModifiedDate datetime);
UPDATE TOP (10) HumanResources.Employee
SET VacationHours = VacationHours * 1.25
OUTPUT INSERTED.EmployeeID,
DELETED.VacationHours,
INSERTED.VacationHours,
INSERTED.ModifiedDate
INTO @MyTableVar;
--Display the result set of the table variable.
SELECT EmpID, OldVacationHours, NewVacationHours, ModifiedDate
FROM @MyTableVar;
GO
--Display the result set of the table.
--Note that ModifiedDate reflects the value generated by an
--AFTER UPDATE trigger.
SELECT TOP (10) EmployeeID, VacationHours, ModifiedDate
FROM HumanResources.Employee;
GO
feixianxxx 2010-03-18
  • 打赏
  • 举报
回复
批量改 另外弄...
feixianxxx 2010-03-18
  • 打赏
  • 举报
回复
批量改 另外弄...
feixianxxx 2010-03-18
  • 打赏
  • 举报
回复
可以。。
create trigger tr_t on 你的表名
for update
as
begin
declare @n int
set @n=(select id from inserted )
print '你表中ID为'+rtrim(@n)+'已经修改了!!'
end
tzc 2010-03-18
  • 打赏
  • 举报
回复
可以。
建一个触发器 AFTER update
old.列名 就是修改的列
当然也可以在修改前触发

34,576

社区成员

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

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