MYSQL和ORACLE的触发器与存储过程语法差异
整改了一番脚本,遇到了一些两种数据库之间的差异,记录一下:
触发器:
差异 | MYSQL | ORACLE | 说明 |
创建语句不同 | create trigger `AA` BEFORE INSERT on `BB` for each row |
create or replace trigger AA before insert or update or delete on BB for each row |
1.Oracle可以在一个触发器触发insert,delete,update事件. Mysql每个触发器只支持一个事件. 也就是说,目前每个trigger需要拆分成3个mysql trigger. |
引用新旧数据不同 | 取得新数据: NEW.aa 取得老数据: OLD.bb |
取得新数据: :new.aa 取得老数据: :old.bb |
1.oracle 多一对冒号 |
存储过程:
差异 | MYSQL | ORACLE | 说明 |
创建语句不同 | DROP PROCEDURE IF EXISTS `SD_USER_P_ADD_USR`; create procedure AA( aa varchar(100)) |
create or replace procedure AA( varchar aa) is |
1.oracle创建语比较简洁,mysql要先执行drop 2.mysql先变量再类型,oracle相反,且不必限定长度 3.如果是number或varchar2的话不需要定义长度。否则编译不能通过 |
异常处理不一样 | DECLARE EXIT HANDLER FOR AAEXCEPTION BEGIN ... END; |
EXCEPTION WHEN OTHERS THEN ROLLBACK ; .... |
1.mysql不能自定义异常,且使用内部异常时需要先定义 |
调用存储方式不同 | call procedure(); | procedure(); | 1.调用方式不同 |
由于oracle删除触发器前没有判断是否存在,那么如何任性删除触发器呢:
declare
V_NUM number;
BEGIN
select count(0) into V_NUM from user_triggers where trigger_name = 'AA'; (注意大小写)
if V_NUM > 0 then
execute immediate 'DROP TRIGGER AA';
end if;
END;
MYSQL和ORACLE的触发器与存储过程语法差异的更多相关文章
- 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件
数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...
- mysql第五篇 : MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
第五篇 : MySQL 之 视图.触发器.存储过程.函数.事物与数据库锁 一.视图 视图是一个虚拟表(非真实存在的),其本质是‘根据SQL语句获取动态的数据集,并为其命名‘ ,用户使用时只需使用“名称 ...
- MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁
浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视 ...
- MySQL自定义函数、触发器、存储过程
存储过程 概念 存储过程,是一个数据库对象,类似一个函数. 在存储过程中可以使用SQL中的绝大部分内容,并且可以加入编程语言的特性(循环判断分支). 编写好存储过程之后,可以在客户端调用存储过程,存储 ...
- MYSQL之视图、触发器、存储过程、函数、事物、数据库锁和数据库备份
一.视图 -- view 视图:是一个虚报表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图有如下特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系 ...
- MySQL之 视图,触发器,存储过程,函数,事物,数据库锁,数据库备份
1.视图 视图: 是一个虚拟表,其内容由查询定义: 视图有如下特点; 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. 2. 视图是由基本表(实表)产生的表(虚表). 3. ...
- mysql数据库----视图、触发器、存储过程、函数、事务、索引、其他语句
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( S ...
- MySQL:视图、触发器、存储过程、事务
视图: 视图,虚拟表 创建虚拟表: # 语法: # create view 虚拟表名称 as 虚拟表; create view course_and_teacher as select * from ...
- MySQL之视图、触发器、存储过程、函数、事务、数据库锁
一.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据. 视图的特点: 1.视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系: 2.视图是由基本 ...
随机推荐
- 支付顺序-->微信支付到公司账户-->待出票
支付顺序-->微信支付到公司账户-->待出票-->查询所有待出票订单 -->遍历提交订单-->火车票接口放回订单id-->存入order订单表中 -->读取订 ...
- osg + cuda
#include <osg/Notify> #include <osgViewer/Viewer> #include <osgCompute/Memory> #in ...
- JSP中的EL语言
1,EL(Expression Language)是从JavaScript得到启发的一种表达式语言, 2,EL表达式包含文字,操作符,变量,函数调用: 3,EL 存取变量的语法格式:${ userna ...
- Mysql innodb 间隙锁
前段时间系统老是出现insert死锁,很是纠结.经过排查发现是间隙锁!间隙锁是innodb中行锁的一种, 但是这种锁锁住的却不止一行数据,他锁住的是多行,是一个数据范围.间隙锁的主要作用是为了防止出现 ...
- 浅析IO模型
也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗.在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型.下面本文先从同步和异步的概念 说起, ...
- Openjudge-计算概论(A)-鸡尾酒疗法
描述: 鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾 滋病.该疗法的应用可以减少单一用药产生的抗药性 ...
- 【CRC校验】学习笔记
#include<stdio.h> unsigned ]= { 0x01,0x02,0x03,0x04,0x05,0x06 }; ] = { 0x0000, 0x1021, 0x2042, ...
- sftp配置多用户权限
sftp配置多用户权限 工作需要,用户上传文件到目录下,用ftp不太安全,选择sftp.让用户在自己的home目录下活动,不能ssh到机器进行操作. 下面开始干活. 查看ssh版本 ssh - ...
- 文本注释系统 + MarkDown
标记系统: 笔记的要点 题材 缘起 目标 等级: 细节性 事实性 规律 法则 适用范围: 时间.地点.人物.起因.经过.结果,who what where when why how whom 6W1H ...
- 下拉的DIV+CSS+JS二级树型菜单
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...