【问题标题】:restricting end users to insert data using a stored procedure限制最终用户使用存储过程插入数据
【发布时间】:2011-03-14 05:44:59
【问题描述】:

使用存储过程,我如何限制用户使用插入查询插入的内容,这可以使用视图的 WITH CHECK OPTION 进行限制?

就像我只希望 steve 和 peter 将数据插入到 ITEM 表中。我在包含所有用户名的 ITEM 表中添加了一个“用户”列。 为此,如果我使用视图,那么在我给出的检查选项中:

WHERE username='steve' OR username='peter' WITH CHECK OPTION

但是我如何使用存储过程来做到这一点?

【问题讨论】:

    标签: sql sql-server sql-server-2005 stored-procedures view


    【解决方案1】:

    类似的东西。您必须先测试用户并决定是否允许。可以将测试包装到另一个存储过程或 UDF 中以供重复使用。

    问题:您的视图如何知道 Steve 或 Peter 是执行视图的人?

    CREATE PROC myProc
       @p1 int
    AS
    SET NOCOUNT ON
    
    BEGIN TRY
        IF SUSER_SNAME() NOT IN ('steve', 'peter')
           RAISERROR ('Oi: Steve and Peter only', 16, 1)
    
    END TRY
    BEGIN CATCH
       ...
    END CATCH
    GO
    

    在这里查看我的答案stored proc template

    【讨论】:

    • 史蒂夫将登录到应用程序。所以当他执行视图时,视图会检查他的用户名。因为我的表之前已经插入了用户名
    猜你喜欢
    • 2013-09-20
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-21
    相关资源
    最近更新 更多