写一个游标来搜索和插入
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
我有这样的表格:
主要
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