任何人都知道如何检查Sybase数据库中是否已存在某个角色...我有角色的名称
有一个sysroles表,但没有名称列!
select * from sysroles
答案 0 :(得分:0)
查看proc_role("role_name")(现已折旧为has_role)或role_id("role_name")。
答案 1 :(得分:0)
SELECT HAS_ROLE(“role_name”,1)告诉您执行代码段的用户是否具有该角色,而不是角色是否存在。当然,您必须了解db上下文。
如果您打算使用sys表,您需要查看doco(PDF,不在线,可以下载),表格图(显示关系),并习惯它们。表几乎完全标准化。
-- Check if role exists in server
SELECT [RolesInSvr] = svr.name
FROM master..syssrvroles
WHERE name = "role_name"
-- Check if role exists in db
SELECT [RolesInDb] = svr.name
FROM master..syssrvroles svr,
sysroles db
WHERE svr.srid = db.id
AND svr.name = "role_name"
-- List roles in db
SELECT [RolesInDb] = svr.name,
[Locked] = CASE svr.status & 2
WHEN 2 THEN "Locked"
ELSE CHAR(0)
END
[Expired] = CASE svr.status & 4
WHEN 4 THEN "Expired"
ELSE CHAR(0)
END
FROM master..syssrvroles svr,
sysroles db
WHERE svr.srid = db.id