限制最终用户使用存储过程插入数据

时间:2011-03-14 05:45:00

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

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

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

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

但是如何使用存储过程执行此操作?

1 个答案:

答案 0 :(得分:3)

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

问题:你的观点如何知道史蒂夫或彼得是执行观点的人?

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