除了Trigger之外,有什么好的方法记录数据的变更?

marco08 2010-05-10 11:46:26

RT
...全文
403 39 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenjian001574 2010-05-11
  • 打赏
  • 举报
回复
问问,如果改变的字段不止一个该用什么,表吗?
喜-喜 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happy_stone 的回复:]
膜拜前輩.
[/Quote]

.....
东那个升 2010-05-10
  • 打赏
  • 举报
回复
给个实例给你看看。
自己研究联机帮助
http://tech.ddvip.com/2009-09/1253374261133585.html
东那个升 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 garnett_kg 的回复:]
SQL2K8 可以使用 Change Data Capture.
[/Quote]

对2008可以用CDC
SQL77 2010-05-10
  • 打赏
  • 举报
回复
..........
sql_lover 2010-05-10
  • 打赏
  • 举报
回复
学习,膜拜前辈~~~~~~~~

SELECT * FROM dbo.A
/********************************************************************
NAME GRADE
------------------------------ -----------
张三 10
李四 11
王五 12
********************************************************************/

CREATE TABLE A_backup
(NAME VARCHAR(30),
Grade INT,
modifydate DATETIME
)

UPDATE A SET GRADE=11
OUTPUT INSERTED.*,GETDATE() AS modifydate INTO A_backup

--SELECT * FROM A_backup
/********************************************************************
NAME Grade modifydate
------------------------------ ----------- -----------------------
张三 11 2010-05-10 12:22:48.973
李四 11 2010-05-10 12:22:48.973
王五 11 2010-05-10 12:22:48.973
********************************************************************/

UPDATE A SET GRADE=12
OUTPUT INSERTED.*,GETDATE() AS modifydate INTO A_backup

--SELECT * FROM A_backup
/********************************************************************
NAME Grade modifydate
------------------------------ ----------- -----------------------
张三 11 2010-05-10 12:22:48.973
李四 11 2010-05-10 12:22:48.973
王五 11 2010-05-10 12:22:48.973
张三 12 2010-05-10 12:24:33.567
李四 12 2010-05-10 12:24:33.567
王五 12 2010-05-10 12:24:33.567
********************************************************************/
marco08 2010-05-10
  • 打赏
  • 举报
回复
谢谢楼上兄弟们的回复。

现在客户要求记录每个表的数据被谁修改过。所以看看除了Trigger,有没有好的方法。
黄_瓜 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 noteasytoregister 的回复:]
SQL code
--SQL 2005
UPDATE TB SET COL=COL+2
OUTPUT INSERTED.* INTO TB2
[/Quote]
已经有了
只好膜拜膜拜前辈
黄_瓜 2010-05-10
  • 打赏
  • 举报
回复
弱弱的回答一个
--> 测试数据:[ta]
if object_id('[ta]') is not null drop table [ta]
go
create table [ta]([id] int)
insert [ta]
select 1 union all
select 2 union all
select 3

--------------------------------查询开始------------------------------
delete from ta output deleted.* into [tb] where id=3
update ta set id=id+3 output deleted.* into [tb] where id=2
select * from [tb]
/*
id
-----------
3
2

(2 行受影响)
*/
Garnett_KG 2010-05-10
  • 打赏
  • 举报
回复
SQL2K8 可以使用 Change Data Capture.
--小F-- 2010-05-10
  • 打赏
  • 举报
回复
日志文件
zheninchangjiang 2010-05-10
  • 打赏
  • 举报
回复
trigger都不需要,只需要日志就好了
noteasytoregister 2010-05-10
  • 打赏
  • 举报
回复
--SQL 2005
UPDATE TB SET COL=COL+2
OUTPUT INSERTED.* INTO TB2
SQL_Server_Central 2010-05-10
  • 打赏
  • 举报
回复
膜拜前輩.
htl258_Tony 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 happy_stone 的回复:]
膜拜前輩.
[/Quote]。
快乐_石头 2010-05-10
  • 打赏
  • 举报
回复
膜拜前輩.
dawugui 2010-05-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 marco08 的回复:]
除了Trigger之外,有什么好的方法记录数据的变更?[
[/Quote]
不是用Trigger记录数据的变更.

我的做法是,每变更一次,就生成一条新的记录.并加个序号来记录.
类似工商局企业数据的变更.(但是企业代码不允许变更,只允许注销).
feixianxxx 2010-05-10
  • 打赏
  • 举报
回复
话说回来 触发器 难道不好么?
其他的手段估计对性能也蛮有影响的。
同光和尘 2010-05-10
  • 打赏
  • 举报
回复
学习 …………关注
昵称被占用了 2010-05-10
  • 打赏
  • 举报
回复
sql增加的这些功能,好像都不是给最终用户加的,往往得不到很想要的比如客户端IP、用户、应用程序,以及修改前后的值,总体来说,想要定制一点还是需要用触发器。
加载更多回复(17)

34,838

社区成员

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

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