Хранимая процедура SQL Server Express: выберите, удалите, вставьте - PullRequest
1 голос
/ 20 марта 2019

Я использую приведенный ниже запрос для вставки записи в таблицу.

DELETE FROM Table1;

INSERT into Table1 (F1,f2,f3...) SELECT * FROM TABLE2 WHERE......

Проблема в том, что запрос SELECT потребовал некоторое время для извлечения из-за многих условий, в то время как записи уже удалены из Table1, живые записиможет быть недоступен для отображения на стороне клиента в ожидании результата запроса SELECT и может быть вставлен в таблицу table1.

Сначала мне нужно ВЫБРАТЬ запись, затем УДАЛИТЬ запись из таблицы1, затем вставить выбранную запись в таблицу1.Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 20 марта 2019

вы можете использовать транзакцию как, а также удалить после вставки, но добавить куда-нибудь критерии.

BEGIN TRY
BEGIN TRAN

   While (i<0)(while loop and so on condition.)
   BEGIN
     DELETE FROM Table1 ;
     INSERT into Table1 (F1,f2,f3...) SELECT * FROM TABLE2 WHERE......
   END

COMMIT TRAN
END TRY
BEGIN CATCH
  ROLLBACK TRAN
END CATCH
0 голосов
/ 20 марта 2019

Вы можете использовать @@ rowcount

Declare @row_count int
SELECT @row_count=count(*) FROM TABLE2 WHERE......
INSERT into Table1 (F1,f2,f3...) SELECT * FROM TABLE2 WHERE......
DELETE TOP(@row_count) FROM Table1 ;

Сначала посчитайте, сколько записей вы хотите вставить, Первые данные вставлены, если данные вставлены успешно, данные удаляются другие мудрые данные не будут удалены

Итак, каждый раз, когда в таблице доступны данные для отображения клиента

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...