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

发布于 2024-10-21 22:43:00 字数 279 浏览 1 评论 0原文

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

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

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

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

using a stored procedure, how can i restrict what a user INSERTS using a insert query, which could be restricted using WITH CHECK OPTION of a View?

like i want only steve and peter to insert data into a ITEM table. i have added a column 'USERS' in the ITEM table which consists of all the usernames.
for this if i use view , then in the check option i give :

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

but how do i do this using a stored procedure?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

Smile简单爱 2024-10-28 22:43:00

像这样的东西。您必须首先测试用户并决定是否允许。测试可以包装到另一个存储过程或 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

请参阅我的答案,获取存储过程模板

Something like this. You have to test for a user first and decide whether to allow. The test can be wrapped into another stored proc or UDF for re-use.

Question: how does your view know that Steve or Peter are the ones executing the view?

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

See my answer here for a stored proc template

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文