触发器

数据库的概念

坚强是说给别人听的谎言 提交于 2020-02-18 05:55:43
1、触发器的作用? 答:触发器是一种特殊的存储过程,它主要是通过事件来触发而被执行的。它的作用是可以强化约束,维护数据的完整性和一致性,也可以可以跟踪数据库内的操作从而不允许未经许可的更新和变化。也可以联级运算。如某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。 2、什么是存储过程?如何来调用存储过程? 答:存储过程是一个预编译的SQL语句,他的优点是允许模块化的设计,也就是说只需创建一次,在该程序中就可以调用多次。例如某次操作需要执行多次SQL,就可以把这个SQL做一个存储过程,因为存储过程是预编译的,所以使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。 3、什么是内存泄漏? 答:一般我们所说的内存泄漏指的是堆内存的泄漏。堆内存是程序从堆中为其分配的,大小任意的,使用完后要显示释放内存。当应用程序用关键字new等创建对象时,就从堆中为它分配一块内存,使用完后程序调用free或者delete释放该内存,否则就说该内存就不能被使用,我们就说该内存被泄漏了。 4、什么是事务? 答:事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。事务有四个特性,分别是:原子性,一致性,隔离性和持久性。 5

Mysql存储过程、触发器和事务

会有一股神秘感。 提交于 2020-02-17 14:31:47
一、存储过程 定义存储过程 语法: create procedure 过程名(参数1,参数2....) begin sql语句; end 创建存储过程之前我们必须修改mysql语句默认结束符; 要不能我们不能创建成功 , 使用 delimiter 可以修改执行符号。 mysql> delimiter % #这样结束符就为% mysql> create procedure selCg() -> begin -> select * from category; -> end % 调用存储过程 语法: call 过程名(参数1,参数2); mysql> call selCg() ; 存储过程参数类型 In 参数 特点:读取外部变量值,且有效范围仅限存储过程内部 例 1 : mysql> delimiter // mysql> create procedure pin(in p_in int) -> begin -> select p_in; -> set p_in=2; -> select p_in; -> end // mysql> delimiter ; #使用完马上恢复默认的 mysql> call pin(1); #调用pin存储过程 例 2 :定义存储过程 getOneBook,当输入某书籍 id 后,可以调出对应书籍记录 mysql> create procedure

MySQL触发器简介

北城余情 提交于 2020-02-17 14:22:08
MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语句来调用,也不需要手工启动,只要一个预定义的事件发生就会被 MySQL自动调用。 引发触发器执行的事件一般如下: 增加一条学生记录时,会自动检查年龄是否符合范围要求。 每当删除一条学生信息时,自动删除其成绩表上的对应记录。 每当删除一条数据时,在数据库存档表中保留一个备份副本。 触发程序的优点如下: 触发程序的执行是自动的,当对触发程序相关表的数据做出相应的修改后立即执行。 触发程序可以通过数据库中相关的表层叠修改另外的表。 触发程序可以实施比 FOREIGN KEY 约束、CHECK 约束更为复杂的检查和操作。 触发器与表关系密切,主要用于保护表中的数据。特别是当有多个表具有一定的相互联系的时候,触发器能够让不同的表保持数据的一致性。 在 MySQL 中,只有执行 INSERT、UPDATE 和 DELETE 操作时才能激活触发器。 在实际使用中,MySQL 所支持的触发器有三种:INSERT 触发器、UPDATE 触发器和 DELETE 触发器。 1) INSERT 触发器 在 INSERT 语句执行之前或之后响应的触发器。 使用 INSERT 触发器需要注意以下几点: 在 INSERT 触发器代码内,可引用一个名为 NEW(不区分大小写

关于ADG切换主备可能会遇到的问题

本小妞迷上赌 提交于 2020-02-16 18:24:49
1, 用户名密码错误 这种错误一般要考虑你的密码文件问题,因为要远程登录,重新创建orapw文件,并且检查进行切换操作的用户是否拥有相应的权限 2, ORA-16191 ORA-01017 and ORA-16000 shipping the logs to Standby database (Doc ID 2129339.1) Error 1017 received logging on to the standby ------------------------------------------------------------ Check that the primary and standby are using a password file and remote_login_passwordfile is set to SHARED or EXCLUSIVE, and that the SYS password is same in the password files. returning error ORA-16191 ------------------------------------------------------------ PING[ARC2]: Heartbeat failed to connect to standby 'test_dg'.

同步复位、异步复位都是什么呢?

你说的曾经没有我的故事 提交于 2020-02-15 13:25:54
同步复位: 当时钟上升沿检测到复位信号,执行复位操作(有效的时钟沿是前提)。always @ ( posedge clk ); 优点: a、有利于仿真器的仿真; b、可以使所设计的系统成为 100% 的同步时序电路,有利于时序分析,而且可综合出较高的 Fmax; c、由于只在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的复位毛刺。 缺点: a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑诸如 clk skew 、组合逻辑路径延时 、复位延时等因素(所以复位信号有时需要脉冲展宽,用以保证时钟有效期间有足够的复位宽度); b、由于大多数的逻辑器件的目标库内的 DFF 都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会一方面额外增加FPGA内部的逻辑资源,另一方面也增加了相应的组合逻辑门时延。 异步复位: 它是指无论时钟沿是否到来,只要复位信号有效,就对系统进行复位。always @ ( posedge clk or negedge rst_n ); 优点: a、大多数目标器件库的 DFF 都有异步复位端口,那么该触发器的复位端口就不需要额外的组合逻辑,这样就可以节省资源; b、设计相对简单; c、异步复位信号识别方便(电路在任何情况下都能复位而不管是否有时钟出现)。 缺点: a

为什么CPU需要时钟这种概念?

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-15 13:24:00
本文同时发表在 https://github.com/zhangyachen/zhangyachen.github.io/issues/132 最近在研究计算机里的基本逻辑电路,想到一个问题:为什么CPU需要时钟这样的概念? 首先考虑如下逻辑电路: 当A=B=1时,Q=0。当输入信号发生变化时,逻辑元件不会立即对输入变化做出反应,会有一个传播时延(propagation delay)。当B变化为0时,由于B也作为XOR的直接输入,所以XOR异或门会立即感知一个输入变为0的状态变化,XOR输出变为了1。但是由于传播时延的作用,AND与门的输出会过一小段时间才变为0,XOR的输出会在变为1后隔一小段时间重现变为0。表现为下图就是这样: 上面这种现象叫作空翻(race condition),即指输出中出现了一个不希望有的脉冲信号。 一个简单的办法就是在输出端放置一个边沿触发器: 边沿触发器的作用就是只有当CLK端输入从0变到1时,数据端D的输入才会影响边沿触发器的输出。这样,所有的传播时延都会被边沿触发器所隐藏掉,这时Q端的输出将变得稳定。比如: 其中灰色的部分代表没有边沿触发器时的Q端输出状态。我们可以看出,当有了边沿触发器后,Q端的输出变得稳定,基本消除了传播时延。 从上面的例子我们可以看出CPU为什么要时钟:目前绝大多数的微处理器都是被同步时序电路所驱动,而时序电路由各种逻辑门组成

如何消除毛刺

主宰稳场 提交于 2020-02-13 18:46:04
建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被打入触发器;保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被打入触发器。数据稳定传输必须满足建立时间和保持时间的要求,当然在一些情况下,建立时间和保持时间的值可以为零。   1.PLD内部产生毛刺的原因     使用分立元件设计数字系统时,由于PCB走线时存在分布电感和电容,所以几纳秒的毛刺将自然滤除,而在PLD内部并无分布电感和电容,所以在PLD/FPGA设计中,竞争和冒险问题将变得较为突出。   2.PLD内部毛刺的消除     一种常见的方法是利用D触发器的D输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。   在仿真时,也可能会发现在FPGA器件对外输出引脚上有输出毛刺,但由于毛刺很短,加上PCB本身的寄生参数,大多数情况下,毛刺通过PCB走线基本可以被自然滤除,不用再外加阻容滤波。   优秀的设计方案,如采用格雷码计数器、同步电路,可以大大减少毛刺,但并不能完全消除毛刺。毛刺并不是对所有输入都有危害,例如D触发器的D输入端,只要毛刺不能出现在时钟的上升沿并且满足数据的建立和保持时间

时序约束之时钟约束01

淺唱寂寞╮ 提交于 2020-02-13 00:54:22
在同步电路设计中,各功能逻辑单元之间的数据传输由一个同步信号控制,这个执行统一指挥的信号就是时钟信号,因此需要在设计之初创建时钟,基于该时钟频率进行优化设计,使设计性能达到时序收敛的目的。 创建时钟 时钟信号为一个周期性信号,定义时钟需要包括以下主要信息: (1)时钟源点 时钟源点可以根据情况定义为设计中一个端口,一个网络,也可以是一个逻辑单元的PIN脚。为端口时用[get_ports 端口名],为网络时用[get_nets 网络名],为PIN脚时用[get_pins 引脚名]。 (2)时钟周期 时钟周期定义为时钟的震荡周期,为时钟频率的倒数。时钟周期是时序分析中最基本的、最小的时间单元。用{-period period_value}表示 (3)时钟占空比 时钟占空比主要定义时钟高低电平在一个时钟周期内的分布情况。用-[waveform edge_list]表示 通过使用SDC命令creat_clock来创建时钟,比如通过该命令定义一个从CLK端口输出并且时钟周期为10、占空比为50%的时钟信号,命令如下。 creat_clock -period 10 -waveform { 0 5 } [ get_ports clk ] 如上图所示,该命令可以对所有内部触发器到触发器类型的路径进行约束。 (4)命名时钟 每个时钟定义都会给时钟信号命名。用

【WPF学习】第三十八章 行为

左心房为你撑大大i 提交于 2020-02-12 21:43:29
原文: 【WPF学习】第三十八章 行为   样式提供了重用一组属性设置的实用方法。它们为帮助构建一致的、组织良好的界面迈出了重要的第一步——但是它们也是有许多限制。   问题是在典型的应用程序中,属性设置仅是用户界面基础结构的一小部分。甚至最基本的程序通常也需要大量的用户界面代码,这些代码与应用程序的功能无关。在许多程序中,用于用户界面任务的代码(如驱动动画、实现平滑效果、维护用户界面状态,以及支持诸如拖放、缩放以及停靠等用户界面特性)无论是在数量山还是复杂性上都超出了业务代码。许多这类代码是通用的,这意味着在创建的每个WPF对象中需要编写相同的内容。所有这些工作几乎都单调乏味的。   为回应这一挑战,Expression Blend创作者开发了称为行为(behavior)的特征。其思想很简单:创建封装了一些通用用户界面功能的行为。这一功能可以是基本功能(如启动故事板或导航到超链接),也可以是复杂功能(如处理多点触摸交互,或构建使用实时物理引擎的碰撞模型)。一旦构建功能,就可将它们添加到任意应用程序的另一个控件中,具体方法是将该控件链接到适当的行为并设置行为的属性。在Expression Blend中,只通过拖放操作就可以使用行为。 一、获取行为支持   重用用户界面的代码通用块得基础结构不是WPF的一部分。反而,它被捆绑到Expression Blend

【WPF学习】第三十八章 行为

痴心易碎 提交于 2020-02-12 18:27:44
  样式提供了重用一组属性设置的实用方法。它们为帮助构建一致的、组织良好的界面迈出了重要的第一步——但是它们也是有许多限制。   问题是在典型的应用程序中,属性设置仅是用户界面基础结构的一小部分。甚至最基本的程序通常也需要大量的用户界面代码,这些代码与应用程序的功能无关。在许多程序中,用于用户界面任务的代码(如驱动动画、实现平滑效果、维护用户界面状态,以及支持诸如拖放、缩放以及停靠等用户界面特性)无论是在数量山还是复杂性上都超出了业务代码。许多这类代码是通用的,这意味着在创建的每个WPF对象中需要编写相同的内容。所有这些工作几乎都单调乏味的。   为回应这一挑战,Expression Blend创作者开发了称为行为(behavior)的特征。其思想很简单:创建封装了一些通用用户界面功能的行为。这一功能可以是基本功能(如启动故事板或导航到超链接),也可以是复杂功能(如处理多点触摸交互,或构建使用实时物理引擎的碰撞模型)。一旦构建功能,就可将它们添加到任意应用程序的另一个控件中,具体方法是将该控件链接到适当的行为并设置行为的属性。在Expression Blend中,只通过拖放操作就可以使用行为。 一、获取行为支持   重用用户界面的代码通用块得基础结构不是WPF的一部分。反而,它被捆绑到Expression Blend。这是因为行为开始时作为Expression