Удаление Sql, похоже, не работает

#sql #sql-server

#sql #sql-server

Вопрос:

Я запускаю delete sql в Managment Studio 2008, и это показало мне, что sql сработал …. но этого не произошло.

Например

 select count(*) from MyTable where  [MYkey] =24  
  

возвращает 1

 delete from MyTable where  [MYkey] =  24
  

Затронуты строки 1

Но если я немедленно снова выполню первую инструкцию, запись все еще будет там. Если я попробую использовать update утверждение, это сработает. Я вижу такое поведение во всех таблицах базы данных.

Несколько дней назад у меня было несколько проблем с заполнением журнала транзакций, я меняю модель восстановления на простую. Может ли это быть связано? Если да, то что мне нужно сделать?

Комментарии:

1. Может быть, какая-то проблема с транзакцией? Вы зафиксировали транзакцию?

2. Существуют ли какие-либо триггеры, которые вставляют в эту таблицу из другой таблицы? Возможно, вы удаляете, триггер вставляет то, что вы удалили.

3. @Уве Кием. может быть, ок? Что вы имеете в виду? Я просто запустил инструкции с go промежуточным. Как мне зафиксировать транзакцию?

4. @Dan попробуйте сделать это с помощью подзапроса : delete from MyTable where [MYkey] in (SELECT [MyKey] from MyTable where [MyKey] $<>0 and [MYkey] not in (75062897,719192179))

5. @Dan Я не говорю, что здесь задействованы транзакции, я просто хотел указать, что вы должны быть осведомлены о транзакциях, которые могут быть причиной. В прошлом у меня были похожие проблемы с Oracle SQL Developer.

Ответ №1:

Попробуйте это —

   BEGIN TRANSACTION;
  delete from MyTable where  [MYkey] =  24;
  COMMIT TRANSACTION;
  

Комментарии:

1. что вы получаете при выполнении инструкции select — выберите * из MyTable, где [MyKey] = 24

2. Строка возвращается. Удаление не работает / или не выполняется каким-либо образом.

3. Да, я попытался обернуть это в транзакцию — это тоже не помогло : (