ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL授权与触发器

2022-05-02 00:00:34  阅读:137  来源: 互联网

标签:语句 触发 触发器 SQL UPDATE TABLE 授权 权限


授权(GRANT)

语句格式: GRANT 权限 ON TABLE/DATABASE 表名/数据库名

 TO 用户1,用户2… /PUBLIC

 [WITH GRANT OPTION];

 PUBLIC:表示将权限授予所有人

 WITH GRANT OPTION:表示获得了这个权限的用户还可以将权限赋给其他用户。

 

对象

对象类型

操作权限

属性

TABLE

SELECT,INSERT,UPDATE,DELETE, ALL PRIVILEGES(4种权限的总和)

视图

TABLE

SELECT,INSERT,UPDATE,DELETE, ALL PRIVILEGES(4种权限的总和

基本表

TABLE

SELECT,INSERT,UPDATE,DELETE,ALTER,INDEX, ALL PRIVILEGES(6种权限的总

数据库

DATABASE

CREATETAB建立表的权限,可由DBA授予普通用户

 

收回权限(REVOKE)

语句格式: REVOKE 权限 ON TABLE/DATABASE 表名/数据库名

 FROM 用户1,用户2… /PUBLIC

 [RESTRICT | CASCADE];

 RESTRICT:表示只收回语句中指定的用户的权限

 CASCADE:表示除了收回指定用户的权限外,还收回该用户赋予的其他用户的权限。

 

例:将用户User1及User2对供应商S、零件P、项目J的所有操作权限收回:

 REVOKE ALL PRIVILEGES ON TABLE S,P,J FROM User1,User2;

 将所有用户对供应商S的所有查询权限收回:

 REVOKE SELECT ON TABLE S FROM PUBLIC;

 将User1用户对供应商S的供应商编号Sno的修改权限收回。

 REVOKE UPDATE(Sno) ON TABLE S FROM User1;

 

触发器概述

• 触发器主要有以下三方面的特点:

(1)当数据库程序员声明的事件发生时,触发器被激活。声明的事件可以是对某个特定关系的插入、删除或更

新。

(2)当触发器被事件激活时,不是立即执行,而是首先由触发器测试触发条件,如果事件不成立,响应该事件

的触发器什么都不做。

(3)如果触发器声明的条件满足,则与该触发器相连的动作由DBMS执行。动作可以阻止事件发生,可以撤销事

件。

• 创建触发器时需指定:

(1)触发器名称

(2)在其上定义触发器的表

(3)触发事件:触发器将何时激发

(3)触发条件:满足什么条件时执行触发动作

(4)触发动作:指明触发器执行时应做的动作 • 触发器可以引用当前数据库以外的对象,但只能在当前数据库中创建触发器。 • 不能在临时表或系统表上创建触发器,但触发器可以引用临时表。

 

触发器

创建触发器

CREATE TRIGGER 触发器名称 [BEFORE | AFTER]

 [DELETE | INSERT | UPDATE OF 列名] //触发事件

 ON 表名

 [REFERENCING <临时视图名>]

 [FOR EACH ROW | FOR EACH STATEMENT]

 [WHEN <触发条件>] //WHEN后面跟触发条件,指明当什么条件满足时,执行下面的触发动作

 BEGIN

 <触发动作> //BEGIN...END 中定义触发动作,即当触发条件满足时,需要数据库做什么

 END [触发器名称]
  • BEFORE/AFTER:指明是在执行触发语句之前激发触发器还是执行触发语句之后激发触发器。
  • DELETE:当一个DELETE语句从表中删除行时激发触发器。
  • INSERT:当一个INSERT语句向表中插入行时激发触发器。
  • UPDATE/UPDATE OF(列名):当UPDATE修改表中的值时,激发触发器,也可加(OF 列名)指定是某一列的值被修改时激发触发器。
  • REFERENCING:触发器运行过程中,系统会生成两个临时视图,分别存放更新前和更新后的值,对于行级触发器,为OLD ROW
  • 和NEW ROW,对于语句级触发器,为OLD TABLE和NEW TABLE。
  •  REFERENCING new row AS nrow / REFERENCING old row AS orow 。
  • FOR EACH ROW:表示为行级触发器,对每一个被影响的元组(即每一行)执行一次触发过程。
  • FOR EACH STATEMENT:表示为语句级触发器,对整个事件只执行一次触发过程,为默认方式。

 

更改和删除触发器

1、更改触发器

 语句格式: ALTER TRIGGER <触发器名> [BEFORE|AFTER]

 DELETE|INSERT|UPDATE OF [列名]

 ON 表名|视图名

 AS

 BEGIN

 要执行的SQL语句

 END

2、删除触发器

语句格式: DROP TRIGGER <触发器名>

标签:语句,触发,触发器,SQL,UPDATE,TABLE,授权,权限
来源: https://www.cnblogs.com/fancy2022/p/16214812.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有