留痕,怎么做

huangjing81 2005-12-24 11:45:33
数据库有A表.
ID 商品名 金额
1 A 100.00
2 B 200.00
......

现新建表B
操作人 操作时间 操作ID


我想把对表A进行过的操作都记录在表B里,请问怎么实现。主要就是我不大清楚怎么样才能把操作时间和操作人给弄出来。
谢谢各位帮忙了!

...全文
203 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
rouqu 2005-12-29
  • 打赏
  • 举报
回复
create trigger t1
on TbA
after insert,update,delete
as
begin
insert into TbB (操作人,操作时间) values (SUSER_SNAME(),getdate())
end

wfliu 2005-12-24
  • 打赏
  • 举报
回复
这个还是在程序里实现方便一下,在程序里,用户登陆取得用户名,时间now()

在sql实现比较麻烦,可试着从master库里sysprocesses表中user取得机器名,但判断从哪台机器发出的请求比较麻烦,
huangjing81 2005-12-24
  • 打赏
  • 举报
回复
登录名是保存在软件的变量里面的
我的想法是用SQL Server 的触发器能行吗
Anders_lt 2005-12-24
  • 打赏
  • 举报
回复
楼上的方法ke
lsqkeke 2005-12-24
  • 打赏
  • 举报
回复
你系统有个登陆吧,那用户登陆成功后,你就记录下该用户名,
当他对此表进行操作时,如更新,当按更新按钮时,除了对A表进行操作外,还获得此时的系统时间和运行时机子IP ,将三个信息写入B表,就相当于操作日志的处理
wfliu 2005-12-24
  • 打赏
  • 举报
回复
使用 CURRENT_USER 可以,但必须在数据库中为每个用户分配用户名。这样在程序中创建用户时,同时在数据库创建该用户。
huangjing81 2005-12-24
  • 打赏
  • 举报
回复
找到了,用Current_user可以实现
huangjing81 2005-12-24
  • 打赏
  • 举报
回复
这么复杂??
rouqu 2005-12-24
  • 打赏
  • 举报
回复
或者用SUSER_SNAME()来获取当前登陆用户名
rouqu 2005-12-24
  • 打赏
  • 举报
回复
create trigger t1
on TbA
after insert,update,delete
as
insert into TbB (操作人,操作时间) values (myFunction01,getdate())

关于myFunction01的写法参考API用例
rouqu 2005-12-24
  • 打赏
  • 举报
回复
对表A作触发器
操作人 建API函数获得
操作时间 getdate()

34,588

社区成员

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

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