sql触发器

MYSQL双主模式,触发器(trigger)不可见问题

匿名 (未验证) 提交于 2019-12-02 22:02:20
MYSQL版本信息: Your MySQL connection id is 71851 Server version : 5.7 . 24 - log MySQL Community Server ( GPL ) 昨晚解决一个紧急问题,计划用MYSQL的触发器简单做两表的数据同步。 单机模式创建的触发器(trigger)可正常看到,在双主模式下执行SQL命令创建的触发器在Navicat下看不到,但是用show trigger可以看到。 在双主模式下,函数在Navicat下也是存在一些问题。 关于双主模式下trigger的详细描述 https://dev.mysql.com/doc/refman/5.7/en/replication-features-triggers.html 转载请标明出处: MYSQL双主模式,触发器(trigger)不可见问题 文章来源: MYSQL双主模式,触发器(trigger)不可见问题

视图、事务、索引,触发器,流程控制。

这一生的挚爱 提交于 2019-12-02 11:31:59
视图、事务、索引,触发器,流程控制。 视图:view 视图与真实表共享数据,视图和真实表的数据会相互映射, 视图的表结构只要存在真实表的数据只要存在,视图就可以使用。 数据依赖:单表emp 1)视图是存在内存中的临时表 2)视图的创建依赖select语句,所有就是select语句操作的结果形参的表 3)视图支持对数据的增删查改 ? 4)视图不允许对视图表的字段做修改 5)视图不仅支持创建,也支持更新与删除 语法:创建视图 mysql>: create view 视图名[(别名们)] as select 语句; eg>: create view v1 as select dep, max(salary) from emp group by dep; # 创建或替换视图 mysql>: create or replace 视图名[(别名们)] as select 语句; mysql>: alter 视图名[(别名们)] as select 语句; eg>: create or replace view v1(dep_name, max_salary) as select dep, max(salary) from emp group by dep; eg>: alter view v1(name, salary) as select dep, max(salary) from emp

触发器摘录

依然范特西╮ 提交于 2019-12-02 08:49:24
INSTEAD OF 触发器用来代替通常的触发动作,即当对表进行INSERT、UPDATE 或 DELETE 操作时,系统不是直接对表执行这些操作,而是把操作内容交给触发器,让触发器检查所进行的操作是否正确。如正确才进行相应的操作。因此,INSTEAD OF 触发器的动作要早于表的约束处理。 INSTEAD OF 触发器的操作有点类似于完整性约束。在对数据库的操纵时,有些情况下使用约束可以达到更好的效果,而如果采用触发器,则能定义比完整性约束更加复杂的约束。有关触发器与约束的比较,请参见联机丛书。 INSTEAD OF 触发器不仅可在表上定义,还可在带有一个或多个基表的视图上定义,但在作为级联引用完整性约束目标的表上限制应用。 AFTER 触发器定义了对表执行了 INSERT、UPDATE 或 DELETE 语句操作之后再执行的操作。比如对某个表中的数据进行了更新操作后,要求立即对相关的表进行指定的操作,这时就可以采用 AFTER 触发器。AFTER 触发器只能在表上指定,且动作晚于约束处理。 每一个表上只能创建一个 INSTEAD OF 触发器,但可以创建多个 AFTER 触发器。 实例: INSTEAD OF 触发器: 向表“计0261”插入数据时,检查学号是否存在于表“计026”中,如存在则进行插入操作,否则就不插入。 SQL code ? 1 2 3 4 5 6 7 8 9

SQL Server 创建触发器(trigger)

倖福魔咒の 提交于 2019-12-01 09:03:20
触发器简介: 触发器是一种特殊的存储过程,它的执行不是由程序调用,也不是手动执行,而是由事件来触发。触发器是当对某一个表进行操作。例如:update、insert、delete这些操作的时候,系统会自动调用执行该表上对应的触发器。 触发器分类: 1、DML( 数据操纵语言 Data Manipulation Language)触发器:是指触发器在数据库中发生 DML 事件时将启用。DML事件是指在表或视图中对数据进行的 insert、update、delete 操作的语句。 2、DDL(数据定义语言 Data Definition Language)触发器:是指当服务器或数据库中发生 DDL 事件时将启用。DDL事件是指在表或索引中的 create、alter、drop 操作语句。 3、登陆触发器:是指当用户登录 SQL SERVER 实例建立会话时触发。如果身份验证失败,登录触发器不会触发。 其中 DML 触发器比较常用,根据 DML 触发器触发的方式不同又分为以下两种情况: after 触发器(之后触发):其中 after 触发器要求只有执行 insert、update、delete 某一操作之后触发器才会被触发,且只能定义在表上。 instead of 触发器 (之前触发):instead of 触发器并不执行其定义的操作(insert、update、delete

探索SQL Server元数据(二)

為{幸葍}努か 提交于 2019-12-01 07:57:24
背景   上一篇中,我介绍了SQL Server 允许访问数据库的元数据,为什么有元数据,如何使用元数据。这一篇中我会介绍如何进一步找到各种有价值的信息。以触发器为例,因为它们往往一起很多问题。 那么如何找到触发器的数据?   以sys.system_views is表开始。让我们查询出数据库中使用触发器的信息。可以告知你当前SQL Server版本中有什么触发器。 SELECT schema_name(schema_ID)+'.'+ name FROM sys.system_views WHERE name LIKE '%trigger%' ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ---------------------------------------- sys.dm_exec_trigger_stats sys.server_trigger_events sys.server_triggers sys.trigger_event_types sys.trigger_events sys.triggers (6 row(s) affected)   其中sys.triggers看起来信息很多,它又包含什么列?下面这个查询很容易查到: SELECT Thecol.name+ ' '+ Type_name(TheCol

mysql触发器

假装没事ソ 提交于 2019-12-01 01:48:57
本文链接: https://blog.csdn.net/qq_40884473/article/details/78442457 触发器作用 :当操作了某张表时,希望同时触发一些动作/行为,可以使用触发器完成。 触发器结构: CREATE TRIGGER <触发器名称> { BEFORE | AFTER } { INSERT | UPDATE | DELETE } ON <表名称> FOR EACH ROW <触发器SQL语句> 关键字解释: { BEFORE | AFTER } --触发器有执行的时间设置:可以设置为事件发生前或后。 { INSERT | UPDATE | DELETE } --可以在执行insert、update或delete的过程中触发。 FOR EACH ROW --触发器的执行间隔:FOR EACH ROW子句通知触发器 每隔一行执行一次动作,而不是对整个表执行一次。 <触发器SQL语句> --触发器包含所要触发的SQL语句:这里的语句可以是任何合法的语句, 包括复合语句,但是这里的语句受的限制和函数的一样。 触发器举例 insert update delete : -- 创建触发器(插入) CREATE TRIGGER tri_empAdd AFTER INSERT ON employee FOR EACH ROW -- 当往员工表插入一条记录时

存储过程和触发器——MySQL

我的未来我决定 提交于 2019-11-30 08:09:51
从 MySQL5.0 版本开始就对存储过程和触发器进行了支持,在 MySQL 进行学习前,先查看您所使用的版本吧,方法有: 1.$mysql -V //linux 终端下 2.select version(); //mysql 下 3. mysql --help | grep Distrib //linux 终端下 在了解您所使用的版本支持情况下再下一步 存储过程 sql 语句执行的时候要先编译,然后执行。存储过程( Stored Procedure )是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 一、存储过程介绍 存储过程是由流控制和 SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。在 ORACLE 中,若干个有联系的过程可以组合在一起构成程序包。 存储过程是利用 SQL Server 所提供的 Tranact-SQL 语言所编写的程序。 Tranact-SQL 语言是 SQL Server 提供专为设计数据库应用程序的语言,它是应用程序和 SQL Server 数据库间的主要程序式设计界面。它好比 Oracle 数据库系统中的 Pro-SQL 和

sql server 触发器

≯℡__Kan透↙ 提交于 2019-11-29 23:36:54
最近有个业务需要用到sql server 的触发器,网上找了半天,查出来大部分都是oracle 的,决心自己写篇sql server触发器的教程。 业务需求是这样的,数据库表中有两个datetime 的字段,StartTime、EndTime,当EndTime的值被插入或者修改时,自动计算StartTime、EndTime差值存入TIme 字段 代码如下: 1. 首先我们先把插入更新时EndTime的值赋值给@endt,在判断是否为空值, 2.如果不为空,在获取插入或更新的id和时间差赋值给变量,然后再进行更具id 主键更新Time 字段。 来源: https://www.cnblogs.com/yunsun/p/11539704.html

什么是数据库触发器?

大憨熊 提交于 2019-11-29 10:24:58
目录 什么是数据库触发器? 事件 AFTER触发器 INSTEAD OF触发器 特殊数据库对象 定义 用于触发器 复杂的审计 执行业务规则 派生列值 触发器很棘手! 什么是数据库触发器? 数据库触发器是在数据库中发生特定操作时运行的特殊 存储过程 。大多数触发器定义为在对表的数据进行更改时运行。触发器可以定义为替代或在 DML (数据操纵语言) - 如 INSERT, UPDATE, and DELETE - 之后来运行。 触发器可帮助数据库设计人员确保完成某些操作(如维护审计文件),而不管哪个程序或用户对数据进行了更改。 程序被称为触发器,因为事件(例如向表中添加记录)会触发它们的执行。 触发器及其实现特定于数据库供应商。在本文中,我们将重点介绍 Microsoft SQL 服务器 ; 但是, Oracle 和 MySQL 中的概念相同或相似。 注意:本课程的所有示例均基于 Microsoft SQL Server Management Studio 和 AdventureWorks2012 数据库。 事件 触发器可以在 DML 操作之后发生,也可以不发生。触发器与数据库 DML 操作 INSERT , UPDATE 和 DELETE 相关联。触发器定义为在特定表上执行这些操作时运行。 AFTER 触发器 一旦 DML 操作(例如 INSERT )完成,就会执行 AFTER

MySQL 中用Update触发器实现修改值

血红的双手。 提交于 2019-11-29 08:42:27
原来写一篇在 SQL Server 中用Update 触发器修改值的博客: https://blog.csdn.net/yenange/article/details/85126707 今天又碰到有个 贴子 里希望用Update触发器修改值, 区别比较大, 记录下来留底: ##注意点: ## 1. 在客户端中创建触发器,必须使用 delimiter $$ ## 2. 只能用 before 触发器 ## 3. 触发器中不能用 update ,只能用 set drop table if exists test; create table test( id int primary key, flg nvarchar(20) ); insert into test values(1,''); insert into test values(2,''); drop trigger if exists trig_test_update; delimiter $$ CREATE TRIGGER `trig_test_update` before update on `test` for each row BEGIN set new.flg='有更新'; END; $$ update test set flg='a'; select * from test; /* +----+--------+