关于删除的触发器,希望能监视出到底是谁,执行了什么语句删除了纪录,送分啦?

sxh401 2003-10-20 11:11:05
在一个表上建一个触发器,然后我希望发生删除操作时,系统显示,哪个用户、执行了哪条语句、删除了什么纪录,请问怎么处理?谢谢!
...全文
56 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yun198183 2003-10-27
  • 打赏
  • 举报
回复

应该弄个日志表
sxh401 2003-10-22
  • 打赏
  • 举报
回复
To cxmcxm(小陈) :
用日志怎么实现?谢谢!
sxh401 2003-10-22
  • 打赏
  • 举报
回复
To LengyuYuan(冷雨)
恩,你的办法我知道,用你的方法也是可行的,可是,数据的丢失怀疑是程序执行的结果,所以我想跟踪一下看看是什么语句导致的数据丢失,用你的方法取出了用户和时间,但是执行删除的语句还是没有取出来
cxmcxm 2003-10-21
  • 打赏
  • 举报
回复
用触发器不行,问题是server不知是哪个用户操作,还是用日志文件
LengyuYuan 2003-10-21
  • 打赏
  • 举报
回复
To sxh401(天涯) :
天涯兄,首先建立YourTableLog,比原來的YourTable多兩個欄位用來記錄登陸帳號和刪除時間,然後運行下面的觸發器,然後你在YourTable中刪除一條紀錄,之後再在YourTableLog中查一下原來的紀錄是否在裡面,我試過,可以成功紀錄刪除者,刪除時間,刪除了那筆記錄



CREATE TRIGGER Log_Table ON dbo.YourTable
FOR DELETE
AS
set nocount on

insert into YourTableLog select * , system_user, getdate() from deleted


Angelnet 2003-10-21
  • 打赏
  • 举报
回复
关注
sxh401 2003-10-21
  • 打赏
  • 举报
回复
可是我不知道是什么时候数据丢失了,我需要找到是什么时候,执行了什么操作,致使数据丢失,我在前台怎么跟踪?
sdhdy 2003-10-20
  • 打赏
  • 举报
回复
用触发器不可行
--你怎么在触发器里获得哪个用户?执行了哪条语句?删除了什么纪录?
而在前台就比较好判断了
sxh401 2003-10-20
  • 打赏
  • 举报
回复
那用什么函数取之行的语句?
LengyuYuan 2003-10-20
  • 打赏
  • 举报
回复
建立Log_Table,在原來的表上在增加兩個欄位DelBy,DelTime
--****************************************************
--監控刪除資料紀錄,刪除者,刪除時間及刪除了那條紀錄
--****************************************************
CREATE TRIGGER Log_Table ON dbo.YourTable
FOR DELETE
AS
set nocount on

insert into Log_Table select * , system_user, getdate() from deleted
yujohny 2003-10-20
  • 打赏
  • 举报
回复
对,最好还是用一个表来保存操作的人、记录等
sdhdy 2003-10-20
  • 打赏
  • 举报
回复
用一个触发器恐怕不行,建议你建一个日志表,
字段
FLogID 日志ID,可以用自增字段
FUserID 操作者ID
FDate 日期
FStatus 执行的语句
FResult 删除了哪些记录
删除的时候,写入这张表,然后从这张表再读数据显示
伍子V5 2003-10-20
  • 打赏
  • 举报
回复
这种功能,应该用报警来做

在联机帮助里查看 sp_addmessage raiserror
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
1: select top 0 *,space(20) as 用户,getdate() as 时间 into logTable from tablename
2:如下触发器,但不能知道执行哪条语句。
create trigger 名 on tableName
For delete
As
insert logTable select host_name(),getdate(),* from deleted
txlicenhe 2003-10-20
  • 打赏
  • 举报
回复
1: select *,space(20) as 用户,getdate() as 时间 into logTable from tablename
2:如下触发器,但不能知道执行哪条语句。
create trigger 名 on tableName
For delete
As
insert logTable select host_name(),getdate(),* from deleted
qdubit 2003-10-20
  • 打赏
  • 举报
回复
关注!
Sqlite Developer是一个非常非常好的管理工具,有点象Mssql企业管理器,支持多国语言   强大的SQL编辑器: Sqlite Sql语法高亮;Sql编辑历史;Sql关键字自动完成;括号高亮匹配;表,字段名自动完成;自动SQL语法错误提示;支持Unicode。 SQL代码格式化器 支持ANSI,UTF8和UTF16数据编辑. 可定制的数据类型映射 可执行分号分割的多条SQL语句. SQL执行监视器. 可视化查询设计器. 可视化表 ,视图 ,触发器和索引编辑. 可按文本,16进制,HTML或者位图形式编辑数据. 支持查看和编辑临时表,视图和触发器. 支持查询计划. 自动更新. 可以将数据导为sql,csv,excel, word, html, xml. 可以导入csv文件. 可以导数据库的元数据. 支持数据库元数据查找 可以中断长时间查询 支持Sqlite可加载扩展及虚拟表 多语言支持(英语,简体中文,日语)   Sqlite Developer3.9.7更新内容: [SQLite的引擎]更新:添加扩展spellfix1。 [数据编辑器]修正:修复粘贴记录命令走捷径CTRL V CTRL ALT V,以避免冲突的默认粘贴命令(回归3.67) [数据编辑器]更新:添加克隆纪录命令。 [SQLite的引擎]更新:升级到SQLite 3.7.17 [数据编辑器]更新:粘贴从剪贴板数据,并允许用户取消操作时显示进度。 [查询编辑器]修正:有时自动完成错了位置popupped。   [SQLite的发动机]修正:SOUNDEX函数不会被编译。

34,575

社区成员

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

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