Sql 如何锁定表,以便用户无法对其执行插入、更新和删除操作(只有触发器可以)
下面是我的表格Sql 如何锁定表,以便用户无法对其执行插入、更新和删除操作(只有触发器可以),sql,sql-server,permissions,Sql,Sql Server,Permissions,下面是我的表格 CREATE TABLE [dbo].[Test] ( [Id] INT NOT NULL, [CommaSeperatedString] nvarchar(Max) NOT NULL, CONSTRAINT [PK_Test] PRIMARY KEY ([Id]) ) 我想锁定这个表,这样它只能通过触发器更新 也就是说,我不希望用户能够运行 插入 更新 删除 靠着这张桌子。它可能只能通过我设置的一些触发器进行更新 这可能吗?在managemen
CREATE TABLE [dbo].[Test]
(
[Id] INT NOT NULL,
[CommaSeperatedString] nvarchar(Max) NOT NULL,
CONSTRAINT [PK_Test] PRIMARY KEY ([Id])
)
我想锁定这个表,这样它只能通过触发器更新
也就是说,我不希望用户能够运行
- 插入
- 更新
- 删除
这可能吗?在management studio中,您可以转到用户角色-->属性-->安全设置 在此处添加该表,您可以拒绝对该表的权限。 拒绝将否决任何允许的权利。因此,即使用户有另一个表示允许的角色,其权限仍将被拒绝 更多信息:
编辑:如果您的触发器在同一张表上,请使用替代触发器,如其他答案所述。否则使用权 在management studio中,您可以转到用户角色-->属性-->安全设置 在此处添加该表,您可以拒绝对该表的权限。 拒绝将否决任何允许的权利。因此,即使用户有另一个表示允许的角色,其权限仍将被拒绝 更多信息:
编辑:如果您的触发器在同一张表上,请使用替代触发器,如其他答案所述。否则使用权 是的,使用而不是触发器我们可以有条件地阻止其他人进行凝乳操作。但是我们也可以从一些用户那里完全批准或拒绝这些操作。为此,我们使用如下命令
GRANT - gives a user permission to perform certain tasks on database objects
DENY - denies any access to a user to perform certain tasks on database objects
REVOKE - removes a grant or deny permission from a user on certain database objects
请参考本网站
最好的是……是的,使用而不是触发器我们可以有条件地阻止其他人进行凝乳操作。但是我们也可以从一些用户那里完全批准或拒绝这些操作。为此,我们使用如下命令
GRANT - gives a user permission to perform certain tasks on database objects
DENY - denies any access to a user to perform certain tasks on database objects
REVOKE - removes a grant or deny permission from a user on certain database objects
请参考本网站
祝您一切顺利。…好了,这里的进入了画面
您可以为而不是INSERT
和创建触发器,而不是UPDATE
和delete
CREATE TRIGGER Trig_INS_Test ON Test
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO Test (CommaSeperatedString)
SELECT CommaSeperatedString
FROM inserted
END
好了,这里有一幅图画
您可以为而不是INSERT
和创建触发器,而不是UPDATE
和delete
CREATE TRIGGER Trig_INS_Test ON Test
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON
INSERT INTO Test (CommaSeperatedString)
SELECT CommaSeperatedString
FROM inserted
END
不授予任何.CRUD或只是插入更新删除?(CRUD中的R代表Read)@EdwinStoteler哦,是的,好地方。为了澄清,只需插入
更新
和删除不授予任何权限。CRUD还是只插入更新删除?(CRUD中的R代表Read)@EdwinStoteler哦,是的,好地方。为了澄清,只需插入更新和删除如果我的触发器在一个单独的表上怎么办?i、 e.我将一行插入另一个表([testnormalized]
),该表更新了[Test]
table@user1:那么您需要做的是在[TestNormalized]表上生成而不是插入触发器,并在[Test]表上生成而不是更新触发器。如果我的触发器位于单独的表上,该怎么办?i、 e.我将一行插入另一个表([testnormalized]
),该表更新了[Test]
table@user1:那么您需要做的是在[TestNormalized]表上生成而不是插入触发器,并在[Test]表上生成而不是更新触发器。