有一个表 tablea 有一个字段 sts .
表 table_log 日值表
现在我想写一个触发器实现一下功能:
1 sts 不能 从'Y' 改为 'N'
2 记录下来是那个ip的用户在做这个操作(把'Y' 改为 'N').我的程序如下:
if :old.sts = 'Y' and :new.sts='N' then
insert into table_log
values (SYS_CONTEXT('USERENV','IP_ADDRESS'));
raise_application_error(-20004,'不能把Y改成N');
end if ;但是我测试后发现实现不了以上功能..
请教大侠们该如何实现...
表 table_log 日值表
现在我想写一个触发器实现一下功能:
1 sts 不能 从'Y' 改为 'N'
2 记录下来是那个ip的用户在做这个操作(把'Y' 改为 'N').我的程序如下:
if :old.sts = 'Y' and :new.sts='N' then
insert into table_log
values (SYS_CONTEXT('USERENV','IP_ADDRESS'));
raise_application_error(-20004,'不能把Y改成N');
end if ;但是我测试后发现实现不了以上功能..
请教大侠们该如何实现...
解决方案 »
- oracle ses安装
- 在pb向oracle过程传date型参数时,报无效月份错误,调用过程错误!!!望指点
- 请教一个plsql的日期转换成字符串的问题!着急啊!
- 从某种意义上来说,数据库具备增删改查的功能一般应用其实就足够用了,不知有人认同我的观点不?
- 请高手解决启动问题,分不够再加!!!!!!!!!!!
- 求过程语句
- 《程序员》上介绍的那本《Oracle 务实讲座》(何致亿 著)的书有人先睹为快没?
- 这样的UpdateSql语句如何写
- 对存储过程熟悉的朋友,麻烦看一下哪错了,我是新来的:)
- server 2012 安装不了oracle10g 64位
- 急!!!row_number()over(partition by 用在存储过程中无效,恳请高手相助!!
- ORACLE MERGER 的应有和问题
二、最好先DECLARE一个VARCHAR2变量internet_ip,然后在触发器里写
select sys_context('userenv','ip_address') into internet_ip from dual;
insert into table_log values (internet_ip);
二、最好先DECLARE一个VARCHAR2变量internet_ip,然后在触发器里写
select sys_context( 'userenv ', 'ip_address ') into internet_ip from dual;
insert into table_log values (internet_ip);
-----------------------------
不是这个问题,
1.table_log 我没有设主键.
2.第二个方法我用过,一样不行.用不用定义一个变量其实都是一样的结果.
create or replace trigger tri_spjk_table
instead of update on tablea for each row
create or replace trigger tri_spjk_table
instead of update of sts on tablea for each row
要实现 1 sts 不能 从 'Y ' 改为 'N
可以
(1)用instead of 触发器!
(2)在触发器中再把sts值改为'Y'
我知道的只有以上两种,不知道还有什么别的方法?