sql-server - SQL 授予一次只更新一行的权限
问题描述
是否可以将 SQL Server 权限设置为特定用户以允许一次只更新一行?如果答案是yes
,那么如何实现呢?
例如,如果你有这样的事情:
use MyDB
go
update t1 set t1.something = 'xxx'
--select *
from table t1
如果此选择将返回多于 1 条要更新的记录,则不允许这样做(...或仅更新第一个),否则如果只有一条记录将被更新,则允许它。
解决方案
如果您需要临时解决方案,触发器是一种简单的方法。
不过,这将阻止任何人一次更新多个记录。
如果您需要永久解决方案,我会选择@Larnu 的答案
create trigger U_YourTableName on dbo.YourTableName
for update
as
begin
set nocount on
if (select count(1) from inserted) > 1
begin
;THROW 99001, 'your only allowed one update at a time', 1
end
end
推荐阅读
- python - 使用python进行单文件解压优化
- docker - 从 docker swarm 服务容器连接到外部 mysql
- javascript - reactjs中的页面路由时无法访问会话存储
- qt - 在 scoolview qml 中将 qml 中的网格居中
- flutter - 我可以更改 AnimatedContainer 中的边距吗?
- sql - 如何从四个表中选择信息?
- html - 溢出隐藏不起作用,我的标题被内容覆盖
- html - 如何在按钮 HTML 中添加边距文本
- php - PHP:在子目录中找不到类
- linux - 错误:未知指令“rtmp_stat”(使用 NOALBS .conf 文件时 NGNIX 失败)