`
javatoyou
  • 浏览: 1029826 次
  • 性别: 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;
分享到:
评论

相关推荐

    Oracle触发器基础教程.pdf

    Oracle 触发器基础教程 ...触发器也可以用来完成数据复制,例如从一个数据库中向另一个数据库复制数据。 Oracle 触发器是一种强大的工具,可以帮助开发者实现复杂的数据控制和规则,提高数据库的安全性和完整性。

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

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

    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 ...

    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 ...

    PLSQL触发器.pdf

    PLSQL 触发器 PLSQL 触发器是一种特殊的存储过程,与普通存储过程不同的是,...在上面的示例中,我们创建了一个名为 tr_sal 的行级触发器,该触发器会在更新员工薪水时触发,并检查是否减少了薪水,若是,则抛出异常。

    SQL_Server触发器创建、删除、修改、查看示例教程.doc

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

    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 ...

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

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

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

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

    Gbase 8s触发器介绍.doc

    GBase 8s 触发器是一种存储过程,可以在进行 DML/DQL 操作时自动执行相应的语句。触发器可以用于维护多表之间的数据一致性。 触发器的优点 触发器的主要优点在于其自动响应的特性,对表的增/删/改操作都可触发相应...

    SQLServer触发器语法.pdf

    { { FOR | AFTER | INSTEAD OF } { [ Insert ] [ , ] [ Update ] }[ WITH APPEND ][ NOT FOR REPLICATION ] AS [ sql_statement [ ...n ] ] 其中,trigger_name 是触发器的名称,必须符合标识符规则,并且在数据库...

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

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

    SQLServer触发器创建、删除、修改、查看.docx

    一个表或视图的每一个修改动作(insert, update 和 delete)都可以有一个 Instead of 触发器,一个表的每个修改动作都可以有多个 After 触发器。 触发器的执行过程是:如果一个 Insert、update 或 delete 语句违反...

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

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

    数据库触发器PPT教案.pptx

    1. 触发器概述:触发器是一种特殊类型的存储过程,在 SQL Server 里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。 2. 触发器的概念:触发器是一种特殊类型的存储过程,可以实现复杂的参照...

    SQLite触发器的SQL语法.pdf

    SQLite 触发器是数据库 schema 中的一种自动执行的数据库操作,发生在特定的数据库事件,如 DELETE、INSERT、UPDATE 时。触发器可以由在特殊表上执行的语句触发,或 UPDATE 表中特定的字段时触发。 CREATE TRIGGER ...

    SQL Server:触发器实例详解

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

Global site tag (gtag.js) - Google Analytics