【发布时间】:2011-05-05 03:43:53
【问题描述】:
任何人都知道如何检查 Sybase 数据库中是否已存在角色...我知道角色的名称
有一个 sysroles 表,但没有 name 列!
select * from sysroles
【问题讨论】:
任何人都知道如何检查 Sybase 数据库中是否已存在角色...我知道角色的名称
有一个 sysroles 表,但没有 name 列!
select * from sysroles
【问题讨论】:
查看proc_role("role_name")(现已折旧为 has_role)或role_id("role_name")。
【讨论】:
SELECT HAS_ROLE("role_name", 1) 告诉您执行代码段的用户是否具有角色,而不是角色是否存在。当然,您必须了解数据库上下文。
如果你要使用sys表,你需要看一下doco(PDF,不是在线的,可以下载),表图(显示关系),并习惯它们。表格几乎完全标准化。
-- Check if role exists in server
SELECT [RolesInSvr] = svr.name
FROM master..syssrvroles svr
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
【讨论】: