я создал триггер, как показано нижепосле обновления заявления спускового займут много времени
alter trigger sale_Trigger_Update on sale
after update
as
begin
Declare @old_value varchar(50)
Declare @new_value varchar(50)
Declare @sale_id UNIQUEIDENTIFIER
DECLARE new_cur CURSOR FORWARD_ONLY READ_ONLY LOCAL FOR
SELECT saleid
FROM INSERTED
open new_cur
Fetch Next from new_cur into @sale_id
while @@FETCH_STATUS = 0
Begin
set @old_value = (select enddate from deleted where SaleID = @sale_id)
set @new_value = (select enddate from inserted where SaleID = @sale_id)
insert into zzz (old_value,new_value) values(@old_value,@new_value)
end
CLOSE new_cur
DEALLOCATE new_cur
end
Тогда я делаю заявление обновления, как показано ниже
update sale
set enddate = null
Sale
таблиц содержат только 2
строку
и в исполнение продолжается неограниченно.
Я попытался
update sale
set enddate = null
where saleid = 10
та же проблема.
Затем я решительно прекратил выполнение. Затем проверили таблицу sale
и таблицу zzz
. Никаких изменений не произошло. Уверен, что в курсоре есть проблема. Может ли кто-нибудь показать на нем какой-то свет.
**** Edited ****
На самом деле мне нужно проверить enddate in deleted is null and enddate in inserted is not null
open new_cur
Fetch Next from new_cur into @sale_id
while @@FETCH_STATUS = 0
Begin
set @old_value = (select enddate from deleted where SaleID = @sale_id)
set @new_value = (select enddate from inserted where SaleID = @sale_id)
if @old_value = null and @new_value != null
begin
SELECT approval.*,
(select diag.*
from diag diag
where approval.id =diag.id
FOR XML PATH('diag'), TYPE
),
(select ser.*
from ser ser
where approval.id =ser.id
FOR XML PATH('ser'), TYPE
)
FROM approval approval,
where approval.id = 1
and approval.saleid [email protected]
FOR XML PATH, ELEMENTS,
root('Head')
end if
end
CLOSE new_cur
DEALLOCATE new_cur
Когда вы говорите, продажа таблица содержит только две строки, даже с курсором (который не нужен) не следует считать, что много time.did вы проверить любой замок, блокирующий – TheGameiswar
старт, заменив этот курсор с простое соединение ... – mxix
@mxix на самом деле мне нужно взять enddate из вставленных и удаленных, чтобы проверить некоторые условия. – Sachu