你能阻止在 SQL Server 中更新多于 X 行吗?

Cha*_*ook 7 sql-server

有没有办法配置 SQL Server 来限制更新语句可以修改的行数?假设我希望将限制设为 30,000 行,并且有人触发了一个将修改 45,000 行的更新,他们会收到错误或其他一些预防性消息。

mrd*_*nny 7

触发器将是我将如何处理这个。这会减慢所有更新语句的速度,因为 SQL 现在有很多额外的工作要做,但它会处理您的要求。

CREATE TRIGGER Something on dbo.SomeTable
FOR UPDATE
AS
BEGIN
IF (select count(*) from inserted) > 30000
BEGIN
   RAISERROR('To many rows being processed at one.  Reduce and try again.', 16, 1)
   ROLLBACK
END
END
Run Code Online (Sandbox Code Playgroud)

就我个人而言,我不喜欢代替触发器并使用较小的行集重新应用更新的想法,因为这会进入半完成操作的棘手区域,这可能会很快变得非常混乱。

  • 当然,必须在要限制插入的每个表上构建相同的触发器。对此没有全局设置。 (2认同)

Ada*_*ger 5

您可以使用AFTER INSERT TRIGGER执行此操作,并计算插入表中的记录数,并以这种方式处理所需的记录限制。