sql—更新列的所有值的存储过程

qnakjoqk  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(280)

我正在尝试用yes/no更新表事件\u警报。
但是,当调用此存储过程时,列(server\ u match)的所有值都将被更新。
我只需要更新受影响的行。任何帮助都将不胜感激。

  1. create procedure [dbo].[servermatch_apacservers]
  2. as
  3. update event_alerts
  4. set event_alerts.server_match = (case when apac_servers.List_of_servers is null then 'NO' else 'YES' end)
  5. from event_alerts
  6. left join apac_servers on apac_servers.List_of_servers = event_alerts.server_name;
ht4b089n

ht4b089n1#

您需要一个参数来指定更新哪一行。让我假设你有一个 server_name 列以标识服务器:

  1. create procedure [dbo].[servermatch_apacservers] (
  2. @server_name varchar(255)
  3. ) as begin
  4. update event_alerts
  5. set server_match = (case when exists (select 1
  6. from apac_servers a
  7. where a.List_of_servers = event_alerts.server_name
  8. )
  9. then 'YES' else 'NO'
  10. end)
  11. where server_name = @server_name;
  12. END;

也就是说,这个逻辑可以很容易地作为查询运行——并封装为视图。在大多数情况下,没有必要试图保持表格中的最新信息。
你可能想扣动扳机。然而,这需要一个触发器 insert 是的, update s、 以及 delete s。

展开查看全部

相关问题