首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 系列教程之(十二)扩展了解 MySQL 的存储过程,视图,触发器

create procedure p1\G 删除触发器: drop procedure p1 应用场景: 假设表中有千万条数据,在业务端需要进行分页显示,那么通常情况下是使用limit方式来完成, 但是会不会出现...sql执行 举例: 定义一个update语句,在向某个表执行insert添加语句时来触发执行,就可以使用触发器 触发器就是javascript的事件一样 格式:1、触发器的定义:...# trigger_event:触发事件,可取值:INSERTUPDATEDELETE。...-- 查看所有的 触发器 show triggers\G; -- 删除触发器 drop trigger trigger_name; 触发器Demo 注意:如果触发器sql语法错误,那么整个操作都会报错...users表创建一个触发器 -- 当给users表执行insert添加数据之后,就让users_count里面num+1, -- 当users表的数据删除时,就让users_count里面num-1

1K43
您找到你想要的搜索结果了吗?
是的
没有找到

SQL命令 GRANT(一)

该列表可以包含以下一个多个:%ALTER、DELETESELECTINSERTUPDATE、EXECUTE和REFERENCES。...因为GRANT准备和执行非常快,而且通常只运行一次,所以 IRIS不会在ODBC、JDBC动态SQL为GRANT创建缓存查询。 执行GRANT命令时,会执行*的扩展。...%NOCHECK、%NOINDEX、%NOLOCK和%NOTRIGGER权限授予在INSERTUPDATEINSERT OR UPDATEDELETE语句的约束子句中使用这些选项。...在准备INSERTUPDATEINSERT or UPDATEDELETE语句时,必须具有适当的%NOCHECK、%NOINDEX、%NOLOCK%NOTRIGGER权限才能使用该限制。...以下是可用的对象特权值: %ALTER和DELETE权限授予对表视图定义的访问权。 SELECTINSERTUPDATEDELETE和REFERENCES权限授予对表数据的访问权限。

1.7K40

MY SQL存储过程、游标、触发器--Java学习网

MySQL5 添加了存储过程的支持。 大多数SQL语句都是针对一个多个表的单条语句。并非所有的操作都怎么简单。...触发器是MySQL响应一下任意语句而自动执行的一条MySQL语句(位于BEGIN和END语句之间的一组语句) 1 DELETE 2 INSERT 3 UPDATE 其他的MySQL语句不支持触发器...单个触发器不能与多个事件多个表关联,所以,如果你需要一个对INSERTUPDATE存储执行的触发器,则应该定义两个触发器 触发器失败 如果BEFORE(之前)触发器失败,则MySQL将不执行SQL...本提示也适用于UPDATE触发器 DELETE 触发器 DELETE触发器在语句执行之前还是之后执行,需要知道以下几点: 1 在DELETE触发器代码内,你可以引用一个名为OLD的虚拟表,访问被删除的行...以后可能会增强 2 创建触发器可能需要特殊的安全访问权限,但是触发器的执行时自动的.如果INSERT UPDATE DELETE执行,触发器就能执行 3 应该用触发器来保证数据的一致性(大小写、格式等

1.8K30

存储过程和触发器

SQL Server ,存储过程分为两类:系统提供的存储过程和用户自定义存储过程。前者以sp_为前缀且主要是从系统表获取信息。后者是用户可以使用T-SQL语言编写。...创建触发器时会对其进行定义,以便在对特定表列作特定类型的数据修改时执行。...执行触发器时,系统创建了两个特殊的临时表: inserted表:当向表插入数据时,INSERT触发器触发执行,新的记录插入到触发器表和inserted表。...deleted表:用于保存已从表删除的记录,当触发一个DELETE触发器时,被删除的记录存放到deleted表。 修改一条记录等于插入一条新记录,同时删除旧记录。...当对定义了UPDATE触发器的表记录进行修改时,表中原记录移到deleted表,修改过的记录插入到inserted表

1K20

SQL存储过程的详细用法,不信你看不懂

存储过程其实就是已预编译为可执行过程的一个多个SQL语句。通过调用和传递参数即可完成该存储过程的功能。 前面有介绍过存储过程的一些语法,但是没有详细示例,今天我们来一起研究一下存储过程。...存储过程在创建阶段可以带参数不带参数,不带参数的一般是执行一些不需要传递参数的语句就可以完成的功能,带参数那就是需要传递参数的SQL语句,就像上面的示例,传递了两个参数给SQL语句。...因此,恶意用户无法看到表和数据库对象名称、嵌入自己的 Transact-SQL 语句搜索关键数据。 3)使用过程参数有助于避免 SQL 注入攻击。...5不支持群集 数据库服务器无法水平扩展,或者数据库的切割(水平垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库。...(N'PROC_DELETE_ORDER', N'P') IS NOT NULL DROP procedure PROC_DELETE_ORDER; GO CREATE procedure PROC_DELETE_ORDER

6110

SQL 语法速成手册

DML 的核心指令是 INSERTUPDATEDELETESELECT。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。...子查询也称为内部查询内部选择,而包含子查询的语句也称为外部查询外部选择。 子查询可以嵌套在 SELECTINSERTUPDATE DELETE 语句内另一个子查询。...WHERE 后跟一个返回 true false 的条件。 WHERE 可以与 SELECTUPDATEDELETE 一起使用。...在 INSERT 型触发器,NEW 用来表示将要(BEFORE)已经(AFTER)插入的新数据; 在 UPDATE 型触发器,OLD 用来表示将要已经被修改的原数据,NEW 用来表示将要已经修改为的新数据...取值为 BEFORE AFTER。 trigger_event: 触发器的监听事件。取值为 INSERTUPDATE DELETE。 table_name: 触发器的监听目标。

17.1K40

数据库相关知识总结

同样,对于updatedelete也可以执行该操作 插入多行 insert into table_name values(...), values(...), values(...); 插入检索出的数据...): delete insert update 在创建触发器时,需要给出4条信息 唯一的触发器名; 触发器关联的表; 触发器应该响应的活动(DELETEINSERTUPDATE); 触发器何时执行(...因此,每个表最多支持6个触发器(每条INSERTUPDATEDELETE的之前和之后)。...单一触发器不能与多个事件多个表关联,所以,如果你需要一个对INSERTUPDATE操作执行的触发器,则应该定义两个触发器。...create trigger neworder after insert on orders for each row select NEW.order_num; DELETE触发器在DELETE语句执行之前之后执行

3.3K10

SQL 语法速成手册

DML 的核心指令是 INSERTUPDATEDELETESELECT。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。...子查询也称为内部查询内部选择,而包含子查询的语句也称为外部查询外部选择。 子查询可以嵌套在 SELECTINSERTUPDATE DELETE 语句内另一个子查询。...WHERE 后跟一个返回 true false 的条件。 WHERE 可以与 SELECTUPDATEDELETE 一起使用。...在 INSERT 型触发器,NEW 用来表示将要(BEFORE)已经(AFTER)插入的新数据; 在 UPDATE 型触发器,OLD 用来表示将要已经被修改的原数据,NEW 用来表示将要已经修改为的新数据...取值为 BEFORE AFTER。 trigger_event: 触发器的监听事件。取值为 INSERTUPDATE DELETE。 table_name: 触发器的监听目标。

16.8K20

技术阅读-《MySQL 必知必会》

UPDATE语句还可以使用子查询。 IGNORE 关键字 可以指定某个更新操作不成功时继续执行其他更新操作 DELETE 删除行数据 也必须带条件操作,防止误删数据。...在某个表数据发生变更时自动执行一条 MySQL 语句的东西。 只有 DELETEINSERTUPDATE 语句支持触发器。...创建触发器 CREATE TRIGGER 提供唯一的名称,关联的表和操作行为(DELETEINSERTUPDATE),设置执行时机。 只有表才支持触发器,视图,临时表都不支持。...使用触发器 CREATE TRIGGER a_trigger AFTER/BEFORE INSERT / DELETE / UPDATE ON a_table FOR ......常见名词 事务 Transaction 回退 rollback 提交 commit 保留点 savepoint 事务处理设置的占位符,用于部分回退 可以回滚的语句 INSERT UPDATE DELETE

4.6K20

玩转Mysql系列 - 第20篇:异常捕获及处理详解

需求背景 我们在写存储过程的时候,可能会出现下列一些情况: 插入的数据违反唯一约束,导致插入失败 插入或者更新数据超过字段最大长度,导致操作失败 update影响行数和期望结果不一致 遇到上面各种异常情况的时...外部异常 当我们执行一个update的时候,可能我们期望影响1行,但是实际上影响的不是1行数据,这种情况:sql执行结果和期望的结果不一致,这种情况也我们也把他作为外部异常处理,我们将sql执行结果和期望结果不一致的情况统称为外部异常...Mysql内部异常 示例1 test1表的a字段为主键,我们向test1表同时插入2条数据,并且放在一个事务执行,最终要么都插入成功,要么都失败。...select ROW_COUNT() INTO v_update_count; IF v_update_count=1 THEN /*插入订单明细*/ INSERT INTO...FOR SQLEXCEPTION SET hasSqlError=TRUE; ROW_COUNT()可以获取mysqlinsert或者update影响的行数 掌握使用乐观锁(添加版本号)来解决并发修改数据可能出错的问题

2.4K41

数据库的存储过程、游标、触发器与常用的内置函数

6 种触发器 3.2 示例(本节使用MySQL描述) (1)after insert 触发器,在插入数据之后获得@id变量以显示最新的自增长ID (2)after delete 触发器,把被删除的行数据保存在一个存档表...1.1 什么是存储过程 (1)概念 存储过程(Stored Procedure)是是数据库的一个重要对象,是一组为了完成特定功能 的SQL 语句的集合,存储在数据库,经过第一次编译后调用不需要再次编译...、DELETE或者UPDATE table_name: 表示建立触发器的表明,就是在哪张表上建立触发器 trigger_stmt: 触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条...语句 (3)MySQL可以创建 6 种触发器 #(1)BEFORE INSERT #(2)BEFORE DELETE #(3)BEFORE UPDATE #(4)AFTER INSERT #(5)...AFTER DELETE #(6)AFTER UPDATE 3.2 示例(本节使用MySQL描述) (1)after insert 触发器,在插入数据之后获得@id变量以显示最新的自增长ID #删除触发器

1.4K40

Mysql的存储过程

存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。...1.1、Mysql存储过程查询语句执行结果赋值给变量 1 方式 1: 2 DECLARE cnt INT DEFAULT 0; 3 SELECT COUNT(*) INTO cnt FROM test...2 mysql> CREATE PROCEDURE delete_matches(IN p_playerno INTEGER) 3 -> BEGIN 4 ->   DELETE FROM...7.3、MySQL存储过程的调用 1 ALTER PROCEDURE   更改用 CREATE PROCEDURE 建立的预先指定的存储过程,其不会影响相关存储过程存储功能。...7.4、MySQL存储过程的调用   删除一个存储过程比较简单,和删除表一样: 1 DROP PROCEDURE  从 MySQL 的表格删除一个多个存储过程。

6.7K10

什么?还不了解MySQLl存储过程与触发器的创建使用?

因为我们要在存储过程触发器执行sql语句,所以会用到';',如果不改其它符号而使用';'作为语句结束符的话,mysql遇到';'就当作一条语句完成了,而存储过程触发器的sql语句都没写完全呢,这样只会...而如果使用触发器,当用户信息修改时触发触发器执行添加一条日记记录,这样也会比在业务代码执行两条sql语句效率要高。 那么如果创建一个触发器呢?...create trigger 触发器名称 after|before insert|delete|update on 表名 for each row  begin      #触发器要做的事情  end ...触发的条件:insert|delete|update 即可选增删改时触发;比如alter insert,就是在添加完成之后触发,执行时机与触发条件可随意组合使用,即 before insert before...delete before update after insert after delete after update for each row表示任何一条记录的操作满足触发条件都会触发触发器执行

79920

Mysql 快速指南

DML 的核心指令是 INSERTUPDATEDELETESELECT。这四个指令合称 CRUD(Create, Read, Update, Delete),即增删改查。...WHERE 后跟一个返回 true false 的条件。 WHERE 可以与 SELECTUPDATEDELETE 一起使用。...子查询也称为内部查询内部选择,而包含子查询的语句也称为外部查询外部选择。 子查询可以嵌套在 SELECTINSERTUPDATE DELETE 语句内另一个子查询。...取值为 BEFORE AFTER。 trigger_event: 触发器的监听事件。取值为 INSERTUPDATE DELETE。 table_name: 触发器的监听目标。...在 INSERT 型触发器,NEW 用来表示将要(BEFORE)已经(AFTER)插入的新数据; 在 UPDATE 型触发器,OLD 用来表示将要已经被修改的原数据,NEW 用来表示将要已经修改为的新数据

6.8K20

数据库(七)

* from salarys where dept = '市场'; mysql> select * from dept_sc; 注意:对视图数据的 insert update delete 会同步到原表...、insertdelete 在触发器可以访问到将被修改的那一行数据,根据事件不同能访问的也不同,update 可用 old 访问旧数据,new访问新数据,insert 可用 new 访问新数据,delete...在 mysql 只有使用了 InnoDB 数据库引擎的数据库表才支持事务; 事务处理可以用来维护数据库的完整性,保证成批的 sql 语句要么都执行,要么都不执行; 事务用来管理 insertupdate...存储过程是一组任意的 sql 语句集合,存储在 mysql ,调用存储过程时将会执行其包含的所有 sql 语句,与 python 的函数类似。 为什么使用存储过程?...函数 内置函数 在SQL 语句中,表达式可用于一些诸如SELECT语句的ORDER BY DELETE UPDATE语句的 WHERE 子句 SET语句之类的地方。

79820

MySQL命令,一篇文章替你全部搞定

被WHERE过滤掉的数据不会出现在分组。...>5;其中SELECT可以带WHERE过滤条件;INSERT SELECT通常被用于复制表数据 2.3 更新表数据 如果要更新表数据的话,使用UPDATE子句:UPDATE customers SET...当某条SQL语句发生时,自动执行某些其他的SQL语句的时候就需要使用到触发器。触发器只能响应:DELETEINSERT,UPDATE这三个特定操作。 创建触发器?...创建触发器时需要给出最重要的四条信息:1.全局唯一的触发器名;2.触发器关联的表;3.触发器在何时执行(操作执行之前或者之后)4.触发器应该响应的活动(DELETE, INSERT或者UPDATE);...比如例子SELECT NEW.cust_id INTO @newinsertid表示将新插入的行数据的id赋值给变量@newinsertid; DELETE触发器 DELETE触发器在DELETE语句执行之前或者之后

2.6K20
领券