3

「ViewUsersPermission」、「ModifyUsersPermission」などの権限名の定数リストを RolePermissions テーブルに挿入する SQL Server 2012 クエリを作成したいと考えています。

このテーブルには、Roles テーブルへの外部キーである「RoleID」と、varchar 列「PermissionTypeName」の 2 つの列があります。

INSERT INTO [dbo].[RolePermissions] ([PermissionTypeName], [RoleID])

   SELECT 'ViewUsersPermission' AS [PermissionTypeName]
   UNION ALL
   SELECT 'ModifyUsersPermission' AS [PermissionTypeName]
   UNION ALL
   SELECT 'ViewRolesPermission' AS [PermissionTypeName]

   INNER JOIN   (SELECT [RoleID] FROM [dbo].[Roles]
                WHERE [Name] = 'Administrator')

より良い解決策を探しています。次のような権限タイプのリストを指定したい:

SELECT FROM 'ViewUsersPermission', 'ModifyUsersPermission', 'ViewRolesPermission' 

UNION ALLコンストラクトを使用する代わりに。

4

2 に答える 2

8

あなたが少なくとも2008年にいると仮定します

SELECT RoleName
FROM   (VALUES('ViewUsersPermission'),
              ('ModifyUsersPermission'),
              ('ViewRolesPermission')) V(RoleName) 
于 2012-11-21T13:26:30.560 に答える
0

Martin のヘルプに基づいて、完全な SQL INSERT ステートメントは次のようになります。

INSERT INTO [dbo].[RolePermissions] ([PermissionTypeName], [RoleID])
    SELECT [PermissionTypeName], [RoleID] FROM (VALUES('ViewUsersPermission'),             
        ('ModifyUsersPermission'), ('ViewRolesPermission')) V([PermissionTypeName])
    INNER JOIN [dbo].[Roles] AS [Role]
        ON [Role].[Name] = 'Administrator'
于 2012-11-21T13:37:01.127 に答える