当前位置:   article > 正文

视图/触发器的使用_视图触发器使用

视图触发器使用

视图概述

视图就是船舰出来一个虚拟的表来简化一些数据表的操作

创建视图

create View 视图名

  1. CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
  2. VIEW view_name [(column_list)]
  3. AS select_statement
  4. [WITH [CASCADED | LOCAL] CHECK OPTION]

视图定义服从下述限制:

·         SELECT语句不能包含FROM子句中的子查询。

·         SELECT语句不能引用系统或用户变量。

·         SELECT语句不能引用预处理语句参数。

·         在存储子程序内,定义不能引用子程序参数或局部变量。

·         在定义中引用的表或视图必须存在。但是,创建了视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用CHECK TABLE语句。

·         在定义中不能引用TEMPORARY表,不能创建TEMPORARY视图。

·         在视图定义中命名的表必须已存在。

·         不能将触发程序与视图关联在一起

查看视图

DESCRIBE语句查看视图基本信息

SHOW TABLE STATUS语句查看视图基本信息

SHOW CREATE VIEW语句查看视图详细信息

修改视图

alter View 视图名 as sql语句

删除视图

DROP VIEW [IF EXISTS]      view_name [, view_name] ...      [RESTRICT | CASCADE]

创建触发器

CREATE TRIGGER trigger_name trigger_time trigger_event 
ON tbl_name FOR EACH ROW trigger_stmt
触发器只能应用在增删改查中

INSERT:将新行插入表时激活触发程序,例如,通过INSERT、LOAD DATA和REPLACE语句。

UPDATE:更改某一行时激活触发程序,例如,通过UPDATE语句。

DELETE:从表中删除某一行时激活触发程序,例如,通过DELETE和REPLACE语句。

查看触发器

SHOW TRIGGERS;

触发器的使用

  1. CREATE TABLE test1(a1 INT);
  2. CREATE TABLE test2(a2 INT);
  3. CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
  4. CREATE TABLE test4(
  5. a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  6. b4 INT DEFAULT 0
  7. );
  8. DELIMITER |
  9. CREATE TRIGGER testref BEFORE INSERT ON test1
  10. FOR EACH ROW BEGIN
  11. INSERT INTO test2 SET a2 = NEW.a1;
  12. DELETE FROM test3 WHERE a3 = NEW.a1;
  13. UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
  14. END
  15. |
  16. DELIMITER ;
  17. INSERT INTO test3 (a3) VALUES
  18. (NULL), (NULL), (NULL), (NULL), (NULL),
  19. (NULL), (NULL), (NULL), (NULL), (NULL);
  20. INSERT INTO test4 (a4) VALUES
  21. (0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
  22. 如果将下述值插入表test1,如下所示:
  23. mysql> INSERT INTO test1 VALUES
  24. -> (1), (3), (1), (7), (1), (8), (4), (4);
  25. Query OK, 8 rows affected (0.01 sec)
  26. Records: 8 Duplicates: 0 Warnings: 0
  27. 那么4个表中的数据如下:
  28. mysql> SELECT * FROM test1;
  29. +------+
  30. | a1 |
  31. +------+
  32. | 1 |
  33. | 3 |
  34. | 1 |
  35. | 7 |
  36. | 1 |
  37. | 8 |
  38. | 4 |
  39. | 4 |
  40. +------+
  41. 8 rows in set (0.00 sec)
  42. mysql> SELECT * FROM test2;
  43. +------+
  44. | a2 |
  45. +------+
  46. | 1 |
  47. | 3 |
  48. | 1 |
  49. | 7 |
  50. | 1 |
  51. | 8 |
  52. | 4 |
  53. | 4 |
  54. +------+
  55. 8 rows in set (0.00 sec)
  56. mysql> SELECT * FROM test3;
  57. +----+
  58. | a3 |
  59. +----+
  60. | 2 |
  61. | 5 |
  62. | 6 |
  63. | 9 |
  64. | 10 |
  65. +----+
  66. 5 rows in set (0.00 sec)
  67. mysql> SELECT * FROM test4;
  68. +----+------+
  69. | a4 | b4 |
  70. +----+------+
  71. | 1 | 3 |
  72. | 2 | 0 |
  73. | 3 | 1 |
  74. | 4 | 2 |
  75. | 5 | 0 |
  76. | 6 | 0 |
  77. | 7 | 1 |
  78. | 8 | 1 |
  79. | 9 | 0 |
  80. | 10 | 0 |
  81. +----+------+
  82. 10 rows in set (0.00 sec

删除触发器

DROP TRIGGER [schema_name.]trigger_name

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/527493
推荐阅读
相关标签
  

闽ICP备14008679号