Desktop Outlook 2007, 2010, 2013, 2016 и 2019 используют код рендеринга HTML в Word, тогда как в Интернете он отображается браузером пользователя на месте.
Outlook 97-2003 использовал mshtml.dll
(он же Trident, движок Internet Explorer) для рендеринга электронных писем в формате HTML. Поскольку Outlook использовал Word для создания электронных писем в формате HTML, но использовал Internet Explorer для их просмотра, это делало внешний вид электронной почты непоследовательным для пользователей Outlook - Microsoft решила использовать Word как для создания, так и для просмотра - что, на мой взгляд, было колоссальной ошибкой, сдерживающей HTML электронная почта десятилетиями и продолжает сдерживать ее, поскольку теперь она является наименьшим общим знаменателем (это потому, что поддержка Word функций HTML и CSS немного превосходит поддержку Internet Explorer 5.x, поэтому забудьте об использовании таких вещей, как Flexbox и CSS Grids ).
Флаги состояния являются Вашим другом.
UPDATE old_data SET move="MARKED";
INSERT INTO somewhere... SELECT where move="MARKED";
DELETE FROM old_data WHERE move="MARKED";
Если Вы сделаете это с Автоматической фиксацией прочь, то она захватит блокировки повсеместно.
Можно ФИКСИРОВАТЬ после каждого шага, если Вы хотите сделать немного меньше блокировки.
(В MS SQL, по крайней мере), Вы могли использовать транзакции и блокирующие подсказки:
begin tran
insert into inactive
select * from active with (updlock)
where ...
delete from active
where ...
commit tran
Не блокируя подсказку (updlock) мертвые блокировки может произойти, если кто-то действительно изменяет удаляемые записи.
Ваша поддержка БД ВЫХОДНОЙ Пункт? Затем это могло быть идеальным и легким для следования за решением для Вас, не так ли?
http://msdn.microsoft.com/en-us/library/ms177564.aspx
delete active with (readpast)
output DELETED.*
into inactive
where ...
Если можно заблокировать строки пессимистически, который является, поскольку Вы читаете их для копирования их в неактивную таблицу, то никто не может изменить их из-под Вас.
Метод для блокировки строк варьируется брендом базы данных, и Вы не указываете это в своем вопросе.
Объявите локальный var таблицы и поместите значения в там, вставьте их в свою неактивную таблицу, затем удалите строки из активной таблицы, которые находятся в Вашем локальном списке.
Идея транзакции работает точно также хотя также.
Любое использование столбец уникального идентификатора как
delete from active where rowid in (select rowid in inactive)
или
delete from active as a
where exists (select *
from inactive
where pkfld1=a.pkfld1
and pkfld2=a.pkfld2)
Кроме того, не забывайте переносить этот процесс в транзакцию.
Удачи.
Это - то, как я сохраняю мой где пункты:
DECLARE @MyTable TABLE
(
TheKey int PRIMARY KEY
)
--
INSERT INTO @MyTable(TheKey)
SELECT TheKey FROM SourceTable WHERE rows I want
--
INSERT INTO Inactive(fieldlist)
SELECT fieldlist
FROM Active
WHERE TheKey IN (SELECT TheKey FROM @MyTable)
--
DELETE
FROM Active
WHERE TheKey IN (SELECT TheKey FROM @MyTable)
Если Вам будет нужно более сильный, чем это, то необходимо будет посмотреть на блокировку (блокируйте изменения во время транзакции).
Почему у Вас есть две таблицы, а не столбец для "IsActive"?