当视图所依赖的基本表有多个时,不能向该视图插入数据,因为这
将会影响多个基本表。
对 # 语句还有一个限制: 语句中必须包含 % 子句
中指定表的所有不能为空的列。
修改数据:使用 "$ 语句可以通过视图修改基本表的数据
注意:若一个视图依赖于多个基本表,则一次修改该视图只能变动一个基本表的数
据。
删除数据:使用 $ 语句可以通过视图删除基本表的数据
注意:对依赖于多个基本表的视图,不能使用 $ 语句。
(3) 触发器(trigger)
它是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件
来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触
发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS
,USER_TRIGGERS 数据字典中查到。
为什么要使用触发器:
可以使用它来检查或预防坏的数据进入数据库。
可以改变或取消 INSERT、UPDATE、以及 DELETE 语句。
可以在一个会话中监视数据改变的动作。
创建触发器:
$%# !user&"#"()
3触发器名称4
!'%&%(
!#&"$&$(
#3表名称4
%,
3触发的 语句4
说明:
DEFINER : The DEFINER clause specifies the MySQL account to be used when checking
access privileges at trigger activation time. If a user value is given, it should be a MySQL account
specified as 'user_name'@'host_name'。
触发器名称:触发器必须有名字,最多 64 个字符,可能后面会附有分隔符.它和 MySQL
中其他对象的命名方式基本相象
触发程序的动作时间:BEFORE AFTER. 可以设置为事件发生前或后.
事件:指明了激活触发程序的语句的类型。可以是下述值之一:
INSERT:将新行插入表时激活触发程序,例如,通过 INSERT、LOAD DATA 和
REPLACE 语句。
UPDATE:更改某一行时激活触发程序,例如,通过 UPDATE 语句。
DELETE : 从 表 中 删 除 某 一 行 时 激 活 触 发 程 序 , 例 如 , 通 过 DELETE 和
REPLACE 语句。
表:触发器是属于某一个表的:当在这个表上执行插入、更新或删除操作的时候就导致触发
器的激活。我们不能给同一张表的同一个事件安排两个触发器,而且必须引用永久性表,
不能将触发程序与 TEMPORARY 表或视图关联起来。
触发间隔:FOR EACH ROW 通知触发器每隔一行执行一次动作,而不是对整个表执行一