`
javatoyou
  • 浏览: 1021125 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

近期写的一个比较罗嗦的Oracle after update触发器

 
阅读更多
CREATE OR REPLACE TRIGGER TRG_PRODUCTLIST_UPDATE
AFTER UPDATE OF ISPUBLISH
ON PRODUCTLIST
FOR EACH ROW
declare
ProvideNo ProvideInfo.ProvideNo%type;
InfoTitle ProvideInfo.InfoTitle%type;
FarmProduct ProvideInfo.FarmProduct%type;
FarmClass ProvideInfo.FarmClass%type;
Amount ProvideInfo.Amount%type;
Price ProvideInfo.Price%type;
ProductImage Provideinfo.Productimage%type;
Info Provideinfo.Info%type;
Contact Provideinfo.Contact%type;
RegionNo Provideinfo.Regionno%type;
Region1 Provideinfo.Region1%type; --地市
Region2 Provideinfo.Region2%type; --区县
MainRegionNo Region.Pregionno%type; --地市编号
PublicTime Provideinfo.Publictime%type;
PublicStatus Provideinfo.Publicstatus%type;
IsLimitDays Provideinfo.Islimitdays%type;
InfoPri Provideinfo.Infopri%type;
FromMode Provideinfo.Frommode%type;
FromMobile Provideinfo.Frommobile%type;
FromUserNo Provideinfo.Fromuserno%type;
FromUserName Provideinfo.Fromusername%type;
SubmitTime Provideinfo.Submittime%type;
begin
if :New.ISPUBLISH=0 then
delete from ProvideInfo where ProvideNo=:NEW.ProvideNo;
delete from Productrecommend where ProvideNo=:NEW.ProvideNo;
end if;

if :New.ISPUBLISH=1 then
select getNext_ProvideNo into ProvideNo from dual;
InfoTitle:='供应'+:NEW.FarmProduct;
FarmProduct:=:NEW.FarmProduct;
FarmClass:=:NEW.FarmClass;
Amount:=:NEW.Amount;
Price:=:NEW.Price;
ProductImage:=:NEW.ProductImage;
Info:=:NEW.Info;
select SpaceName+ContactTel into Contact from SpaceList where SpaceNo=:new.SpaceNo;
select RegionNo,SpacePri,SpaceNo,SpaceName
into RegionNo,InfoPri,FromUserNo,FromUserName
from SpaceList where SpaceNo=:new.SpaceNo;
--取区县
select Region,PRegionNo into Region2,MainRegionNo from Region where Region.Regionno=Regionno;
--取地市
select Region into Region1 from region where PRegionNo=MainRegionNo;
select sysdate into PublicTime from dual;
PublicStatus:=1;
IsLimitDays:=0;
FromMode:=7;
select mobile into FromMobile from users where SpaceNo=:new.SpaceNo;
select sysdate into SubmitTime from dual;

insert into ProvideInfo(ProvideNo,InfoTitle,FarmProduct,FarmClass,Amount,
Price,ProductImage,Info,Contact,RegionNo,Region1,Region2,PublicTime,PublicStatus,
IsLimitDays,InfoPri,FromMode,FromMobile,FromUserNo,FromUserName,SubmitTime)
values(ProvideNo,InfoTitle,FarmProduct,FarmClass,Amount,
Price,ProductImage,Info,Contact,RegionNo,Region1,Region2,PublicTime,PublicStatus,
IsLimitDays,InfoPri,FromMode,FromMobile,FromUserNo,FromUserName,SubmitTime);
end if;
end TRG_PRODUCTLIST_UPDATE;
分享到:
评论

相关推荐

    sqlserver触发器例子

    一个表或视图的每一个修改动作(insert,update和delete)都可以有一个instead of 触发器﹐一个表的每个修改动作都可以有多个After触发器。 四﹕触发器的执行过程 如果一个Insert﹑update或者delete语句违反了约束﹐...

    Oraclet中的触发器

    例1: 建立一个触发器, 当职工表 emp 表被删除一条记录时,把被删除记录写到职工表删除日志表中去。 CREATE TABLE emp_his AS SELECT * FROM EMP WHERE 1=2; CREATE OR REPLACE TRIGGER del_emp BEFORE DELETE ON ...

    mysql触发器之创建多个触发器操作实例分析

    在mysql 5.7.2+版本之前,我们只能为表中的事件创建一个触发器,例如,只能为BEFORE UPDATE或AFTER UPDATE事件创建一个触发器。 mysql 5.7.2+版本解决了这样限制,并允许我们为表中的相同事件和动作时间创建多个...

    trigger触发器trigger触发器trigger触发器

    --行级触发器 create or replace trigger insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace trigger update_...

    oracle触发器实例讲解

    oracle触发器实例讲解2008-11-27 09:17--[6]// Oracle Trigger ---------------------------------------------------------------------------------------------// --实例1------------------------ --创建触发器...

    Oracle触发器trigger详解

    每当一个特定的数据操作语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。 举个简单的例子: 当员工表中新增一条记录后,自动打印“成功插入新员工” create or replace ...

    SQL Server 触发器 表的特定字段更新时,触发Update触发器

    代码如下: create trigger TR_MasterTable_Update on MasterTable after update as if update ([Type])–当Type字段被更新时,才会触发此触发器 insert into MasterLogTable select Id ,(Case [Type] when 1 then ...

    SQL Server数据库实验_存储过程与触发器设计.docx

    3、 在表或视图上,每个INSERT、UPDATE或DELETE语句只能创建一个INSTEAD OF类型的触发器,无法为有外键约束且指定为级联删除或级联修改的表创建DELETE或UPDATE语句上的INSTEAD OF 类型的触发器。 SQL SERVER为每个...

    实验六-触发器实验报告.doc

    在Account表上增加一个行级触发器,当对account的balance进行update和insert一个 记录时同步修改Customer的Savings字段,保证数据的一致性。 4. 对account进行update操作,记录account表和customer表的变化。 5. ...

    数据库触发器是一种存储过程

    触发器是一种特殊的存储过程,类似于其它编程语言中的事件函数,SQL Server™ 允许为 INSERT、UPDATE、DELETE 创建触发器,当在表(视图)中插入、更新、删除记录时,触发一个或一系列 T-SQL 语句。 触发器分为两种...

    sqlserver 触发器学习(实现自动编号)

    总结常用基本点如下: 1、触发器有两种... 2、DML触发器分类:Insert触发器、Delete触发器、Update触发器、上面任意类型混合。 3、触发器创建语法: 代码如下: CREATE TRIGGER <trigger> ON <table> {{{FOR|AFTER} <

    SQL Server:触发器实例详解

    一个表或视图的每一个修改动作(Insert、Update和Delete)都可以有一个“Instead of” 触发器,一个表的每个修改动作都可以有多个“After”触发器。 2.1 “Instead of”触发器 “Instead of”触发器在执行真正“插入...

    oracle实验报告

    (6)在一个单独的表上,最多只能创建三个触发器与之关联,一个INSERT触发器,一个DELETE触发器和一个UPDATE触发器。 1. 实例讲解Oracle数据库自带的几个触发器 Oracle数据库自带的几个触发器(最简单触发器格式)...

    Oracle触发器实例代码

    Oracle触发器,用于选单后修改选单的表的触发动作。 --备货检验选单后 回写备货状态 CREATE OR REPLACE TRIGGER tri_TobaccoStockINSERT after INSERT ON "TobaccoStockQuality" FOR each ROW BEGIN UPDATE "Goods...

    Sql Server触发器的使用

    Sql Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护,它们存在于内存中而不是数据库中。这两个表的结构总是与被该触发器作用的表的结构相同,触发器执行完成后,与该触发器...

    数据库——触发器基础知识

    触发器(trigger)是和表关联的特殊的存储过程,当数据库系统执行insert、update和delete事件时,会激活使其执行相应的操作。 2 创建和执行触发器 2.1 触发器中的 new和 old 在MySQL中用old和new表示触发器执行前和...

    几个简单的触发器语句

    几个简单的触发器语句,trigger,after/before,insert/update/delete

    mysql 触发器创建与使用方法示例

    本文实例讲述了mysql 触发器创建与使用方法... 一张表最大能有6个触发器(3*2,三种操作*两种时间(before|after))。 创建触发器  语法: create trigger 触发器名 before|after 事件 on 表名 for each row 触发器语句;

    MySQL 触发器详解及简单实例

    MySQL 触发器简单实例 语法 CREATE TRIGGER <...表名称> –触发器是属于某一个表的:当在这个表上执行插入、 更新或删除操作的时候就导致触发器的激活. 我们不能给同一张表的同一个事件安排两个触发器

Global site tag (gtag.js) - Google Analytics