求:oracle触发器的使用

xuhuanwang_210 2011-09-01 08:39:15
我所想做的就是,在每次用户进入系统,对数据库中数据进行inserted或者是updated的修改的时候,如何讲该用户的信息利用触发器自动的在执行了insert和update的操作的时候就插入数据库的Inserted_by这个字段中??????

...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuhuanwang_210 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 opps_zhou 的回复:]
触发器可以按照 1 楼的来写,但是你要知道用户哪些信息可以通过 userenv 函数来获取
userenv 函数的参数:
CLIENT_INFO
ENTRYID
ISDBA
LANG
LANGUAGE
SESSIONID
SID
TERMINAL
[/Quote]
我所说的用户信息,可能描述不正确。我是写了一个宿舍管理的系统。是在某一个学生登录这个系统的时候,要获得这个学生的学号,很容易保存了她的学号,在她入住就触发了insert语句,从而调用了trigger但是,我怎么把她得学号给字段inserted_by?
opps_zhou 2011-09-01
  • 打赏
  • 举报
回复
触发器可以按照 1 楼的来写,但是你要知道用户哪些信息可以通过 userenv 函数来获取
userenv 函数的参数:
CLIENT_INFO
ENTRYID
ISDBA
LANG
LANGUAGE
SESSIONID
SID
TERMINAL
yixilan 2011-09-01
  • 打赏
  • 举报
回复
比如说在对表A做Insert或Update操作的时候,将这个值'aaa'插入到表B的inserted_by这个字段:
create or replace trigger demo_tri
after insert OR update
on A
REFERENCING OLD AS OLD NEW AS NEW
for each row
declare
begin
insert into B (inserted_by) values ('aaa');
end;
/
justdoitman 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuhuanwang_210 的回复:]

引用 2 楼 opps_zhou 的回复:
触发器可以按照 1 楼的来写,但是你要知道用户哪些信息可以通过 userenv 函数来获取
userenv 函数的参数:
CLIENT_INFO
ENTRYID
ISDBA
LANG
LANGUAGE
SESSIONID
SID
TERMINAL

我所说的用户信息,可能描述不正确。我是写了一个宿舍管理的系统。是在某一个学生登录……
[/Quote]
不知道楼主为什么要这么考虑。为什么不在分配宿舍时就直接写相应的表,这时记录学号就容易的多。楼主的可以考虑下数据库的设计是否可以改进。

17,137

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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