写一个游标来搜索和插入

Write a cursor to search and insert

我有这样的表格:

主要

id name   isedit 
1   kyle   0
2   jhon   1
3   dave   0

编辑历史

id idmain name isedit  Begin                end
1  2      jhon  0      28.05.2020 18:30    28.05.2020 18:35
2  2      jhon  0      28.05.2020 18:35     NULL
3  1      kyle  0      27.05.2020 12:03      NULL

我目前使用触发器:

(…)       if update(isedit) and exists (
        select 1
        from Inserted I
        where design = 0

      ) begin
        Insert into dbo.HistoryEdit
            ([idmain][name][isedit][Begin][end]) SELECT id, name, iedit, GETDATE(), null
        from Inserted 
      end;

我需要创建游标来检查 EditHistory 之前具有相同 idmain 的行,如果有这样的行,将其结束日期编辑为 GETDATE() 并插入 HistoryEdit 与我当前的插页一样。

我知道这可以通过 IF 轻松完成,我就是这样做的。但是我必须为此使用游标,而我以前从未使用过游标。

I never used cursor before.

好吧,现在不要开始。在插入新行之前更新旧行:

declare @d datetime = GetDate()

update EditHistory set end = @d
where id in (select id from inserted)
  and end is null;

Insert into dbo.HistoryEdit
    ([idmain][name][isedit][Begin][end]) 
SELECT id, name, iedit, @d, null
from Inserted