易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle触发器如何实现SqlServer2000的公式

小弟在SqlServer移植到Oracle9i的过程中遇到了一个问题。
具体是这样的:
在原先的SqlServer中有表A(IID,col1,col2,col3),其中IID是序号,col3=col1+col2,col3是用公式实现的。由于Oracle中没有公式这一概念,得用触发器去实现。现在的问题是,我怎么在触发器中得到被更新记录的序列号,要不然我就得对表A中所有记录套用公式:col3=col1+col2,这显然是不现实也不合理的。
还望各位大虾赐教啊,谢谢了。

是冒号,
:new表示新值,:old表示旧值。

create or replace trigger tgname
before insert or update on tabname
for each row
begin
    :new.col3 = nvl(:new.col1,0)+nvl(:new.col2,0);
end;
这样应该就可以了。只针对你插入或者修改的那条记录的(for each row了,行级触发器)。

我只想得到被更新列的序号,楼上没有理解我的意思啊

oracle的行级触发器就是针对每一行的,在触发器中使用:new.IID就行了

直接触发器

new.col3 :=  new.col1+new.col2;

就行了,不需要知道ID号。 new 比SQL SERVER中的insert表方便一些。

10G没有,如果11G就有类似mssql中公式

Col3是公式列,没有什么意义,你在查询的时候手工增加 Col1+Col2 as Col3就行了

直接上代码了
下面是触发器主体
SQL code:

begin
:new.税款合计 = nvl(:new.资源税合计,0)+nvl(:new.个人所得税合计,0)+nvl(:new.企业所得税合计,0)+nvl(:new.营业税合计,0)+nvl(:new.城建税合计,


相关问答:

oracle数据库 缓冲池 - Oracle / 基础和管理

请问这个缓冲池是怎么回事啊?可以连接缓冲池利用其中的数据吧?怎么用?
这个是oracle自动做的,一般应用程序是操作不了的。

不能直接连接吗?

引用
不能直接连接吗?
不能

那缓冲池里的数据也不能查询 ......

java怎么连接Oracle,急啊 - Java / Java相关

private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String USERNAME = "sys";
private static final String PASSWORD = "s ......

Windows 7 怎样安装Oracle - Oracle / 基础和管理

各位大哥,帮个忙。

下个Oracle for vista 版本的安装试试
10G和11G的 
http://www.oracle.com/technology/software/products/database/index.html 
------------------------------------------- ......

oracle并发处理SOS - Oracle / 开发

我在开发的这个应用并发性比较高,oracle更新数据时候如何处理并发处理呢?各位大侠发表好的观点啊,在线等待!
oracle数据更新时,会自动默认行锁定,楼主不要操心,Oracle对并行处理已经很成熟了

引用
oracle ......

oracle 安装 01092 错误 - Oracle / 基础和管理

oracle 11g 安装 01092 错误,
日志信息:
[oracle@linux trace]$ vi alert_orcl.log 
MMON started with pid=14, OS id=9089
RESETLOGS after incomplete recovery UNTIL CHANGE 522752
Errors in file / ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号