- UID
- 19550
- 阅读权限
- 20
- 帖子
- 173
- 精华贴数
- 0
- 技术排名
- 4678
- 技术积分
- 576
- 社区排名
- 31049
- 社区积分
- 3
- 注册时间
- 2002-8-16
- 精华贴数
- 0
- 技术积分
- 576
- 社区积分
- 3
- 注册时间
- 2002-8-16
- 论坛徽章:
- 0
|
本人在hospital用户(拥有connect,resource,dba角色)底下建触发器,触发器DDL:
CREATE OR REPLACE TRIGGER tr_login_record
AFTER
LOGON
ON DATABASE
DECLARE
mtSession v$session%ROWTYPE;
CURSOR cSession(QuerySid IN NUMBER) IS
SELECT * FROM v$session
WHERE audsid = QuerySid;
BEGIN
OPEN cSession(userenv('SESSIONID'));
FETCH cSession INTO mtSession;
IF cSession%FOUND THEN
INSERT INTO log$information(id,username,logintime,terminal,ipadress,osuser,machine,
program,sid,serial#,ausid)
VALUES(sq_login.nextval,USER,SYSDATE,mtSession.Terminal,
SYS_CONTEXT ('USERENV','IP_ADDRESS'),mtSession.Osuser,
mtSession.Machine,mtSession.Program,mtSession.Sid,mtSession.Serial#,userenv('SESSIONID'));
ELSE
raise_application_error(-20099,'登录异常错误');
END IF;
CLOSE cSession;
EXCEPTION
WHEN OTHERS THEN
raise_application_error(-20998,'登记登录信息错误');
RAISE;
END;
/
没有编绎成功,提示‘表和视图不存在’,在v$session前加上sys.也不行,只有在sys用户下才能成功创建成功,请高手帮忙一下,如何在本用户下成功创建这个触发器呢 |
|