第十三章 SQL命令 CREATE ROLE

本文详细介绍了SQL中的CREATEROLE命令,用于创建角色,包括参数描述、权限管理和示例。CREATEROLE允许创建具有命名权限的角色,这些角色可以被多个用户共享。文章还提到了角色的命名规则、权限分配以及如何检查角色是否存在和删除角色的方法。同时,强调了在没有相应权限的情况下执行CREATEROLE会引发错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录

第十三章 SQL命令 CREATE ROLE

创建角色

大纲

CREATE ROLE role-name

参数

  • role-name - 要创建的角色的名称,它是一个标识符。角色名称不区分大小写。

描述

CREATE ROLE命令可创建角色。角色是可以分配给多个用户的一组命名权限。一个角色可以分配给多个用户,一个用户可以分配多个角色。角色在系统范围内可用,它不限于特定的命名空间。

角色名可以是最多64个字符的任何有效标识符。角色名称必须遵循标识符命名约定。角色名称可以包含Unicode字符。角色名称不区分大小写。如果选中了支持分隔标识符配置选项(默认设置),则角色名可以是用引号括起来的分隔标识符。如果是分隔标识符,则角色名可以是SQL保留字。它可以包含句点(.)、插入符号(^)和两个字符的箭头序列(->)。它不能包含逗号()或冒号()字符。它可以以除星号(*)以外的任何有效字符开头。

最初创建角色时,角色只是一个名称;它没有权限。要向角色添加权限,请使用GRANT命令。还可以使用GRANT命令为角色分配一个或多个角色。这允许创建角色层次结构。

如果调用CREATE ROLE来创建已经存在的角色,SQL会发出SQLCODE-118错误。可以通过调用$SYSTEM.SQL.Security.RoleExists()方法确定角色是否已存在:

  WRITE $SYSTEM.SQL.Security.RoleExists("%All"),!
  WRITE $SYSTEM.SQL.Security.RoleExists("Madmen")

如果指定的角色存在,则此方法返回1,如果该角色不存在,则返回0。角色名称不区分大小写。

要删除角色,请使用DROP ROLE命令。

权限

CREATE ROLE命令是特权操作。在嵌入式SQL中使用CREATE ROLE之前,需要以具有%Admin_Secure:USE权限的用户身份登录。否则将导致SQLCODE-99错误(特权冲突)。使用$SYSTEM.Security.Login()方法分配具有适当权限的用户:

   DO $SYSTEM.Security.Login(username,password)
   &sql(      )

必须具有%Service_Login:Use权限才能调用$SYSTEM.Security.Login()方法。

示例

以下示例尝试创建名为BkUser的角色。第一个示例中的用户“fred”没有创建角色权限。第二个示例中的用户“_system”确实拥有CREATE ROLE权限。

ClassMethod CreateRole()
{
	d $SYSTEM.Security.Login("yao","YaoPassword")
	&sql(
		CREATE ROLE BkUser
	)
	if SQLCODE = -99 {
		w !,"没有创建角色的权限" 
	} elseif SQLCODE = -118 {
		w !,"角色已经存在" 
	} else {
		w !,"创建了一个角色。错误代码是: ",SQLCODE 
	}
}

ClassMethod CreateRole1()
{
	d $SYSTEM.Security.Login("_SYSTEM","SYS")
Main
	&sql(
		CREATE ROLE BkUser
	)
	if SQLCODE = -99 {
		w !,"没有创建角色的权限" 
	} elseif SQLCODE = -118 {
		w !,"角色已经存在" 
	} else {
		w !,"创建了一个角色。错误代码是: ",SQLCODE 
	}
Cleanup
	s toggle = $RANDOM(2)
	if toggle = 0 { 
		&sql(
			DROP ROLE BkUser
		)
		w !,"删除角色错误代码: ",SQLCODE
	} else { 
		w !,"未删除"
		q 
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yaoxin521123

谢谢您的支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值