用SQL语句做权限控制

SELECT cu.customer_id, cu.customer_name, cu.province, cu.city, cu.address, cu.phone1, cu.industry, cu.responsible_id, cu.responsible, cu.operate_time, sb.item_value AS industry_name FROM (SELECT customer_id FROM crm_customer WHERE operator_id = 100223 OR responsible_id = 100223 UNION SELECT DISTINCT (csb.info_id) AS customer_id FROM crm_share_base csb WHERE (csb.owner_type = 'user' AND csb.owner_id = 100223) OR (csb.owner_type = 'role' AND csb.owner_id IN (SELECT role_id FROM sys_user_role WHERE user_id = 100223)) UNION SELECT DISTINCT (v.customer_id) FROM crm_share_link_customer_v v WHERE (v.status = '1' AND v.permi = '1' AND v.owner_type = 'user' AND v.owner_id = 100223) OR (v.status = '1' AND v.permi = '1' AND v.owner_type = 'role' AND v.owner_id IN (SELECT role_id FROM sys_user_role WHERE user_id = 100223))) x INNER JOIN crm_customer cu ON cu.customer_id = x.customer_id LEFT OUTER JOIN sys_busi_param sb ON sb.type_name = 'industry' AND sb.item_key = cu.industry WHERE (1 = 1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL语句可以用于实现权限控制的机制和实现方法,以下是一些常见的实现方式: 1. GRANT和REVOKE语句 GRANT语句用于授予用户或角色对数据库对象的访问权限,REVOKE语句则用于撤销这些权限。通过使用GRANT和REVOKE语句,可以实现基于角色的权限控制。 例如,以下语句将用户"alice"授予对表"employees"的SELECT权限: ``` GRANT SELECT ON employees TO alice; ``` 2. CREATE VIEW语句 CREATE VIEW语句可以创建一个虚拟表,它可以对原始表进行过滤、排序、聚合等操作,并且只显示用户具有权限的数据。通过创建不同的视图,可以为不同的用户或角色提供不同的数据访问权限。 例如,以下语句创建一个只显示部门为"Sales"的员工信息的视图: ``` CREATE VIEW sales_employees AS SELECT * FROM employees WHERE department = 'Sales'; ``` 3. CREATE FUNCTION和CREATE PROCEDURE语句 CREATE FUNCTION和CREATE PROCEDURE语句可以创建用户自定义的函数和存储过程,它们可以封装业务逻辑,并且只允许授权的用户或角色调用。通过使用这些语句,可以实现更细粒度的权限控制。 例如,以下语句创建一个只允许管理员调用的存储过程: ``` CREATE PROCEDURE delete_employee (IN id INT) BEGIN IF CURRENT_USER = 'admin' THEN DELETE FROM employees WHERE employee_id = id; ELSE RAISE_ERROR('Permission denied'); END IF; END; ``` 以上是一些常见的SQL语句实现权限控制的机制和实现方法,具体实现方式可以根据具体需求进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值