#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. Да, я попытался обернуть это в транзакцию — это тоже не помогло : (