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自动做的,一般应用程序是操作不了的。
不能直接连接吗?
引用
不能直接连接吗?
不能
那缓冲池里的数据也不能查询 ......
private static final String URL = "jdbc:oracle:thin:@localhost:1521:orcl";
private static final String USERNAME = "sys";
private static final String PASSWORD = "s ......
各位大哥,帮个忙。
下个Oracle for vista 版本的安装试试
10G和11G的
http://www.oracle.com/technology/software/products/database/index.html
------------------------------------------- ......
我在开发的这个应用并发性比较高,oracle更新数据时候如何处理并发处理呢?各位大侠发表好的观点啊,在线等待!
oracle数据更新时,会自动默认行锁定,楼主不要操心,Oracle对并行处理已经很成熟了
引用
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 / ......