28. TRIGGERS ,29. USER_PRIVILEGES,30. VIEWS
28. TRIGGERS
TRIGGERS表
提供有关触发器的信息。要查看有关表的触发器的信息,您必须具有该表的TRIGGER权限。
TRIGGERS表
有以下列:
- TRIGGER_CATALOG :触发器所属目录的名称。该值始终为def。
- TRIGGER_SCHEMA :触发器所属schema(database)的名称
- TRIGGER_NAME :触发器名称
- EVENT_MANIPULATION :触发事件。这是触发器激活的关联表上的操作类型。值为INSERT(已插入行),DELETE(已删除行)或UPDATE(已修改行)。
- EVENT_OBJECT_CATALOG,EVENT_OBJECT_SCHEMA,EVENT_OBJECT_TABLE:如“使用触发器”中所述,每个触发器只与一个表相关联。 这些列分别表示此表所在的目录和schema(数据库)以及表名。 EVENT_OBJECT_CATALOG值始终为def。
- ACTION_ORDER :触发器操作在具有相同EVENT_MANIPULATION和ACTION_TIMING值的同一表上的触发器列表中的序号位置。
- ACTION_CONDITION :此值始终为NULL。
- ACTION_STATEMENT :触发体; 也就是说,触发器激活时执行的语句。 本文使用UTF-8编码。
- ACTION_ORIENTATION :该值始终为ROW。
- ACTION_TIMING :触发器在触发事件之前还是之后激活。值为BEFORE或AFTER。
- ACTION_REFERENCE_OLD_TABLE:此值始终为NULL。
- ACTION_REFERENCE_NEW_TABLE:此值始终为NULL。
- ACTION_REFERENCE_OLD_ROW,ACTION_REFERENCE_NEW_ROW:
分别是旧的和新的列标识符。 ACTION_REFERENCE_OLD_ROW值始终为OLD,ACTION_REFERENCE_NEW_ROW值始终为NEW。 - CREATED :创建触发器的日期和时间。 这是在MySQL 5.7.2或更高版本中创建的触发器的TIMESTAMP(2)值(以百分之几秒为单位),对于在5.7.2之前创建的触发器为NULL。
- SQL_MODE :创建触发器时生效的SQL模式,以及触发器执行的模式
- DEFINER :以
'user_name'@'host_name'
格式创建触发器的用户的帐户。 - CHARACTER_SET_CLIENT :创建触发器时character_set_client系统变量的会话值。
- COLLATION_CONNECTION :创建触发器时collation_connection系统变量的会话值。
- DATABASE_COLLATION :与触发器关联的数据库的排序规则。
示例
root@localhost [test] 11:27:18>CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
Query OK, 0 rows affected (0.05 sec)
root@localhost [test] 11:27:27> CREATE TRIGGER ins_sum BEFORE INSERT ON account FOR EACH ROW SET @sum = @sum + NEW.amount;
Query OK, 0 rows affected (0.03 sec)
root@localhost [test] 11:28:12>SET @sum = 0;
Query OK, 0 rows affected (0.00 sec)
root@localhost [test] 11:28:22>INSERT INTO account VALUES(137,14.98),(141,1937.50),(97,-100.00);
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
root@localhost [test] 11:28:28>SELECT @sum AS 'Total amount inserted';
+-----------------------+
| Total amount inserted |
+-----------------------+
| 1852.48 |
+-----------------------+
1 row in set (0.00 sec)
root@localhost [test] 11:28:34> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G
*************************** 1. row ***************************
TRIGGER_CATALOG: def
TRIGGER_SCHEMA: test
TRIGGER_NAME: ins_sum
EVENT_MANIPULATION: INSERT
EVENT_OBJECT_CATALOG: def
EVENT_OBJECT_SCHEMA: test
EVENT_OBJECT_TABLE: account
ACTION_ORDER: 1
ACTION_CONDITION: NULL
ACTION_STATEMENT: SET @sum = @sum + NEW.amount
ACTION_ORIENTATION: ROW
ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
ACTION_REFERENCE_OLD_ROW: OLD
ACTION_REFERENCE_NEW_ROW: NEW
CREATED: 2018-08-16 11:28:12.06
SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
DEFINER: root@localhost
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
DATABASE_COLLATION: utf8mb4_general_ci
1 row in set (0.00 sec)
root@localhost [test] 11:32:43>show triggers\G
*************************** 1. row ***************************
Trigger: ins_sum
Event: INSERT
Table: account
Statement: SET @sum = @sum + NEW.amount
Timing: BEFORE
Created: 2018-08-16 11:28:12.06
sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Definer: root@localhost
character_set_client: utf8
collation_connection: utf8_general_ci
Database Collation: utf8mb4_general_ci
1 row in set (0.00 sec)
29. USER_PRIVILEGES
USER_PRIVILEGES表
提供有关全局特权的信息。它从mysql.user系统表中获取其值。
USER_PRIVILEGES表
有以下列:
- GRANTEE :授予权限的帐户的名称,格式为
'user_name'@'host_name'
。 - TABLE_CATALOG :目录的名称。该值始终为def。
- PRIVILEGE_TYPE:授予的特权。该值可以是可在全局级别授予的任何特权
- IS_GRANTABLE :如果用户具有GRANT OPTION权限,则为YES,否则为NO。输出不会将GRANT OPTION列为具有PRIVILEGE_TYPE =’GRANT OPTION’的单独行。
Notes
- USER_PRIVILEGES表是非标准的INFORMATION_SCHEMA表。
以下语句不等价:
mysql> select * from user_privileges;
+-----------------------------+---------------+-------------------------+--------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+-----------------------------+---------------+-------------------------+--------------+
| 'root'@'localhost' | def | SELECT | YES |
| 'root'@'localhost' | def | INSERT | YES |
| 'root'@'localhost' | def | UPDATE | YES |
| 'root'@'localhost' | def | DELETE | YES |
| 'root'@'localhost' | def | CREATE | YES |
| 'root'@'localhost' | def | DROP | YES |
| 'root'@'localhost' | def | RELOAD | YES |
| 'root'@'localhost' | def | SHUTDOWN | YES |
| 'root'@'localhost' | def | PROCESS | YES |
| 'root'@'localhost' | def | FILE | YES |
| 'root'@'localhost' | def | REFERENCES | YES |
| 'root'@'localhost' | def | INDEX | YES |
| 'root'@'localhost' | def | ALTER | YES |
| 'root'@'localhost' | def | SHOW DATABASES | YES |
| 'root'@'localhost' | def | SUPER | YES |
| 'root'@'localhost' | def | CREATE TEMPORARY TABLES | YES |
| 'root'@'localhost' | def | LOCK TABLES | YES |
| 'root'@'localhost' | def | EXECUTE | YES |
| 'root'@'localhost' | def | REPLICATION SLAVE | YES |
| 'root'@'localhost' | def | REPLICATION CLIENT | YES |
| 'root'@'localhost' | def | CREATE VIEW | YES |
| 'root'@'localhost' | def | SHOW VIEW | YES |
| 'root'@'localhost' | def | CREATE ROUTINE | YES |
| 'root'@'localhost' | def | ALTER ROUTINE | YES |
| 'root'@'localhost' | def | CREATE USER | YES |
| 'root'@'localhost' | def | EVENT | YES |
| 'root'@'localhost' | def | TRIGGER | YES |
| 'root'@'localhost' | def | CREATE TABLESPACE | YES |
| 'mysql.session'@'localhost' | def | SUPER | NO |
| 'mysql.sys'@'localhost' | def | USAGE | NO |
| 'wbb'@'localhost' | def | USAGE | NO |
| 'wbb2'@'192.168.56.%' | def | USAGE | NO |
| 'bw'@'192.168.56.%' | def | SELECT | NO |
| 'bw'@'192.168.56.%' | def | INSERT | NO |
| 'bw'@'192.168.56.%' | def | UPDATE | NO |
| 'bw'@'192.168.56.%' | def | DELETE | NO |
| 'bw'@'192.168.56.%' | def | CREATE | NO |
| 'bw'@'192.168.56.%' | def | DROP | NO |
| 'bw'@'192.168.56.%' | def | RELOAD | NO |
| 'bw'@'192.168.56.%' | def | SHUTDOWN | NO |
| 'bw'@'192.168.56.%' | def | PROCESS | NO |
| 'bw'@'192.168.56.%' | def | FILE | NO |
| 'bw'@'192.168.56.%' | def | REFERENCES | NO |
| 'bw'@'192.168.56.%' | def | INDEX | NO |
| 'bw'@'192.168.56.%' | def | ALTER | NO |
| 'bw'@'192.168.56.%' | def | SHOW DATABASES | NO |
| 'bw'@'192.168.56.%' | def | SUPER | NO |
| 'bw'@'192.168.56.%' | def | CREATE TEMPORARY TABLES | NO |
| 'bw'@'192.168.56.%' | def | LOCK TABLES | NO |
| 'bw'@'192.168.56.%' | def | EXECUTE | NO |
| 'bw'@'192.168.56.%' | def | REPLICATION SLAVE | NO |
| 'bw'@'192.168.56.%' | def | REPLICATION CLIENT | NO |
| 'bw'@'192.168.56.%' | def | CREATE VIEW | NO |
| 'bw'@'192.168.56.%' | def | SHOW VIEW | NO |
| 'bw'@'192.168.56.%' | def | CREATE ROUTINE | NO |
| 'bw'@'192.168.56.%' | def | ALTER ROUTINE | NO |
| 'bw'@'192.168.56.%' | def | CREATE USER | NO |
| 'bw'@'192.168.56.%' | def | EVENT | NO |
| 'bw'@'192.168.56.%' | def | TRIGGER | NO |
| 'bw'@'192.168.56.%' | def | CREATE TABLESPACE | NO |
| 'wanbin'@'192.168.%' | def | USAGE | NO |
+-----------------------------+---------------+-------------------------+--------------+
mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)
30. VIEWS
VIEWS
表提供有关数据库中视图的信息
VIEWS
表有以下列:
- TABLE_CATALOG :视图所属目录的名称。该值始终为def。
- TABLE_SCHEMA :视图所属的schema(数据库)的名称
- TABLE_NAME :视图名称
VIEW_DEFINITION :提供视图定义的SELECT语句。 此列包含您在SHOW CREATE VIEW生成的Create Table列中看到的大部分内容。 在SELECT之前略过单词并跳过单词WITH CHECK OPTION。 假设原始语句是:
CREATE VIEW v AS
SELECT s2,s1 FROM t
WHERE s1 > 5
ORDER BY s1
WITH CHECK OPTION;然后视图定义如下所示:
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
CHECK_OPTION :CHECK_OPTION属性的值。该值是NONE,CASCADE或LOCAL之一。
- IS_UPDATABLE :MySQL在CREATE VIEW时设置一个标志,称为视图可更新性标志。如果UPDATE和DELETE(以及类似操作)对于视图是合法的,则该标志设置为YES(true)。否则,该标志设置为NO(false)。 VIEWS表中的IS_UPDATABLE列显示此标志的状态。
如果视图不可更新,则UPDATE,DELETE和INSERT等语句是非法的并被拒绝。 (即使视图是可更新的,也可能无法插入;有关详细信息,请参见“可更新和可插入视图”。)
如果视图依赖于一个或多个其他视图,并且更新其中一个基础视图,则IS_UPDATABLE标志可能不可靠。无论IS_UPDATABLE值如何,服务器都会跟踪视图的可更新性,并正确拒绝对不可更新的视图的数据更改操作。如果视图的IS_UPDATABLE值由于对基础视图的更改而变得不准确,则可以通过删除并重新创建视图来更新该值。 - DEFINER :以’user_name’@’host_name’格式创建视图的用户的帐户
- SECURITY_TYPE :视图SQL SECURITY特性。该值是DEFINER或INVOKER之一。
- CHARACTER_SET_CLIENT:创建视图时character_set_client系统变量的会话值。
- COLLATION_CONNECTION:创建视图时collation_connection系统变量的会话值。
Notes
MySQL允许不同的sql_mode设置告诉服务器要支持的SQL语法的类型。 例如,您可以使用ANSI SQL模式来确保MySQL在查询中正确解释标准SQL并置运算符(双栏(||))。 如果您随后创建了一个连接项的视图,您可能会担心将sql_mode设置更改为与ANSI不同的值可能会导致视图无效。 但这种情况并非如此。 无论你如何编写视图定义,MySQL总是以规范的形式存储它。 下面是一个示例,显示服务器如何将双条串联运算符更改为CONCAT()函数:
mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from information_schema.views where table_schema='test'\G
*************************** 1. row ***************************
TABLE_CATALOG: def
TABLE_SCHEMA: test
TABLE_NAME: v
VIEW_DEFINITION: select concat('a','b') AS `col1`
CHECK_OPTION: NONE
IS_UPDATABLE: NO
DEFINER: root@localhost
SECURITY_TYPE: DEFINER
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
1 row in set (0.00 sec)
28. TRIGGERS ,29. USER_PRIVILEGES,30. VIEWS的更多相关文章
- PHP读取APK的包信息,包括包名,应用名,权限,LOGO等
[转]PHP读取APK的包信息,包括包名,应用名,权限,LOGO等 声明本文转自: 原文链接:https://www.jb51.net/article/53780.htm: 感谢分享! <?ph ...
- 短短 29 天,应对高峰 100W+ 访问,看浙大如何交出满分答卷
疫情期间"停课不停教,停课不停学",线上开课第一天,浙江大学网上开课平台访问量即突破100 万次,访客数3万余人,最高峰达 1.1万人同时在线,发起课程直播2000余场,然而系统却 ...
- [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥)
[原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥) nohacks 发表于 2016-5-29 17:12:51 https:// ...
- 29个人,耗时84天,硬刚Python,实验结果如下。
真有动漫风格的编程书籍? 上图,就是日本出版的编程书籍.为什么要搞成动漫风格?因为学编程常常会枯燥,难以坚持.法国思想家布封说:所谓天才,就是坚持不懈的意思.大家学编程,转行.涨薪.加强技能,无论是何 ...
- 20162311 解读同伴的收获&解决同伴的问题(11月29日,周三)
20162311 解读同伴的收获&解决同伴的问题(11月29日,周三) 解读同伴的收获 我的同组同学是20162325学号金立清同学 同组同学的收获是:递归算法的非递归实现.分治法.动态规划法 ...
- 第三百零四节,Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器
Django框架,urls.py模块,views.py模块,路由映射与路由分发以及逻辑处理——url控制器 这一节主讲url控制器 一.urls.py模块 这个模块是配置路由映射的模块,当用户访问一个 ...
- 通栏导航栏的制作,综合使用CSS属性,代码不超过30行
这篇文章,小编带领大家一同做一个利用CSS技术实现的导航栏.通过这个导航栏的制作,希望大家能够对前几篇文章中学习到的CSS属性能有一个整体的认识,并能够达到灵活运用的程度. 承接文章:灵活控制块级元素 ...
- java并发系列 - 第28天:实战篇,微服务日志的伤痛,一并帮你解决掉
这是java高并发系列第28篇文章. 环境:jdk1.8. 本文内容 日志有什么用? 日志存在的痛点? 构建日志系统 日志有什么用? 系统出现故障的时候,可以通过日志信息快速定位问题,修复bug,恢复 ...
- 有两个CIDR地址块208.128/11和208.130.28/22。是否有那一个地址块包含了另一个地址?如果有,请指出,并说明理由。
有两个CIDR地址块208.128/11和208.130.28/22.是否有那一个地址块包含了另一个地址?如果有,请指出,并说明理由. 208.128/11的前缀为:11010000 100: 208 ...
随机推荐
- [置顶] 一位ACMer过来人的心得
刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解. 很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是 ...
- bzoj 4407: 于神之怒加强版【莫比乌斯反演+线性筛】
看着就像反演,所以先推式子(默认n<m): \[ \sum_{d=1}^{n}d^k\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)==d] \] \[ =\sum_{d=1} ...
- bzoj 1031: [JSOI2007]字符加密Cipher【后缀数组】
算是SA的裸题了 把串复制一遍接在原串后面,然后求SA,然后按着SA的顺序输出尾字符即可 #include<iostream> #include<cstdio> #includ ...
- (DP)51NOD 1006 最长公共子序列&1092 回文字符串
1006 给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的). 比如两个串为: abcicba abdkscab ab是两个串的子序列,abc也是,abca也是,其中abc ...
- OpenCv图像像素操作
1:像素 有两种直接操作像素点的方法: 第一种: 将其转化为numpy.array格式,直接进行操作. 第二种:使用Opencv提供的Get1D,Get2D等函数. 2:获取行和列像素 有一下四个函数 ...
- iOS WKWebView 加载进度条、导航栏返回&关闭 (Swift 4)
导航: 1.加载进度条 2.导航栏增加返回.关闭按钮 加载进度条 效果图 代码如下: self.progressView.trackTintColor = UIColor.white self.pro ...
- Spring Cache无效的问题以及解决办法
http://blog.csdn.net/kimylrong/article/details/50126979 @Cacheable标注的方法,如果其所在的类实现了某一个接口,那么该方法也必须出现在接 ...
- java webRoot 路径问题
项目部署后的目录结构 src 生成到 WEB-INF\classes文件下; WebRoot 为项目的根目录,应用中“/action”就相当于是系统目录中的”WebRoot/action" ...
- 洛谷p1955[NOI2015]程序自动分析
题目: 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足. 考虑一个约束满足问题的简化版本:假设x1,x2,x3...代表程序中出现的变量,给定n个形如xi=xj或xi≠xj的变量 ...
- Codeforces Round #405 (rated, Div. 2, based on VK Cup 2017 Round 1) C
Description In the army, it isn't easy to form a group of soldiers that will be effective on the bat ...