壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4001|回复: 20

關於TRIGGER的寫法

[复制链接]
发表于 2007/7/26 14:10:45 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007/7/26 16:02:03 | 显示全部楼层
CREATE SEQUENCE APPS.A_SEQ
  START WITH 0
  MAXVALUE 999999999
  MINVALUE 0
  NOCYCLE
  NOCACHE
  NOORDER;

CREATE OR REPLACE TRIGGER a_trg
   BEFORE INSERT
   ON a
   FOR EACH ROW
DECLARE
   seq number;
BEGIN
   IF to_number(:new.money) >5000
   THEN
       select a_seq.nextval into seq from dual;
      :NEW.num := to_char(seq)||to_char(sysdate,'YYYY');
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      NULL;
END;
 楼主| 发表于 2007/7/26 16:33:28 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007/7/26 16:38:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007/7/26 16:42:46 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007/7/26 17:07:41 | 显示全部楼层
I think so.
Drop Sequence and re-create sequence on year change.
 楼主| 发表于 2007/7/26 17:31:55 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007/7/26 17:34:05 | 显示全部楼层
use lpad.
Example:
select lpad(1,5,'0') from dual
 楼主| 发表于 2007/7/26 17:44:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007/7/26 18:08:21 | 显示全部楼层
试试以下吧
:NEW.num := lpad(to_char(seq),5,'0')||to_char(sysdate,'YYYY');
 楼主| 发表于 2007/7/26 18:48:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007/7/27 10:48:51 | 显示全部楼层
好象這個問題有希望成功實現了啊!!努力!!互相學習一下!!
发表于 2007/8/3 20:05:35 | 显示全部楼层

Example for Return to Supplier

CREATE SEQUENCE APPS.rcv_transactions_SEQ
  START WITH 0
  MAXVALUE 999999999
  MINVALUE 0
  NOCYCLE
  NOCACHE
  NOORDER;

CREATE OR REPLACE TRIGGER rcv_transactions_trg
   BEFORE INSERT
   ON rcv_transactions
   FOR EACH ROW
DECLARE
   seq number;
BEGIN
   IF :new.TRANSACTION_TYPE='RETURN TO VENDOR'
   THEN
       select rcv_transactions_seq.nextval into seq from dual;
      :NEW.attribute1 := '<GROUPID>'||to_char(sysdate,'YYYY')||lpad(to_char(seq),5,'0');
   END IF;
EXCEPTION
   WHEN OTHERS
   THEN
      NULL;
END;

--Make return to Vendor in 11i

select creation_date, TRANSACTION_TYPE, attribute1 --RETURN TO VENDOR
from rcv_transactions
where creation_date > sysdate - 1
and attribute1 is not null

CREATION_DATE        TRANSACTION_TYPE        ATTRIBUTE1
8/3/2007 14:04:34        RETURN TO VENDOR        <GROUPID>200700000
 楼主| 发表于 2007/8/4 17:59:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007/8/4 18:00:16 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007/8/4 18:05:30 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007/8/4 18:07:20 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2007/8/4 18:11:44 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
发表于 2007/8/5 09:58:06 | 显示全部楼层
学习...............
发表于 2007/8/5 19:23:14 | 显示全部楼层
如果不用Sequence的话,可以考虑用ValueSets来控制序号:
Value             Description
101                1
102                1
103                2
Value代表OrgID,Description代表该Org最新的序号。
每次触发,Description + 1,当然你可以写成包,传入Org ID即可。仅供参考。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 16:40 , Processed in 0.017574 second(s), 15 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表