Рейтинг:
7
OriginalGriff
- Да?
Сообщение довольно явное: вы пытаетесь удалить что-то, на что ссылаются в другом месте базы данных, и существует ограничение, что вы не можете этого сделать, чтобы предотвратить "висячие" ссылки.
Вероятно, вы пытаетесь удалить строку, которая используется в качестве внешнего ключа в другой таблице: "User_history". Чтобы удалить его, вы должны сначала удалить строки, которые полагаются на него.
Рейтинг:
28
Tadit Dash (ତଡିତ୍ କୁମାର ଦାଶ)
Вы пытаетесь удалить запись из таблицы, которая имеет ссылку в другой таблице.
Здесь REFERENCE
ограничение есть "FK_User_History_Tbl_Customer
".
Столы есть User_History
и Tbl_Customer
.
UserId
на столбец ссылается Tbl_Customer
Стол.
При попытке удалить строку из User_History
Таблица, она приходит к знанию, что одна и та же строка имеет некоторую связанную строку в Tbl_Customer
Стол.
Итак, вам нужно удалить из Tbl_Customer
Сначала таблица, а затем удалить из таблицы User_History
.
Если вы хотите удалить строку, то вы должны выполнить следующие два запроса в последовательности.
DELETE FROM Tbl_Customer
WHERE UserId = [[[UserIdToDelete]]];
DELETE FROM User_History
WHERE UserId = [[[UserIdToDelete]]]
Iad90
Что делать, если я хочу удалить только из Tbl_Customer и сохранить User_History, не заражая ссылочное ограничение ? Есть ли какое-то решение для этого ?
Рейтинг:
2
jizz
Приведенные выше решения объясняют, в чем заключается проблема, но не объясняют явно, как ее исправить, что можно сделать без написания каких-либо SQL-запросов или другого кода.
Самое простое решение-перейти в SSMS и открыть диаграмму базы данных
выберите отношение
Затем в его свойствах выберите пункт Удалить - каскад
Тогда все делается за вас с помощью SSMS
CHill60
Неужели? Вы снова открыли 4-летний вопрос для этого?
"Каскадное удаление" означает, что ребенок записи удаляются, когда запись удаляется из системы. Родитель стол. Ситуация, описанная ОП, заключается в том, что они пытаются удалить дочернюю строку до удаление строк, которые зависят от него, или перед удалением данных из столбца FK.
Конечно, каскадное удаление означало бы только один шаг, если бы они удалили строку в родительской таблице, но это не решает эту проблему. Однако принятые ответы, очевидно, делают это.
Придерживайтесь ответов на новые сообщения, где ОП все еще нуждается в помощи, и убедитесь, что вы внимательно прочитали вопрос
jizz
I found this thread because I had the exact same error in an application. The solution I have provided fixed it - so thats all that matters. You must be mistaken sorry. What SSMS implements in the SQL I do not know. But I assure you I had the exact same error & the procedure is correct. I implemented this - no further error & my application works perfectly. So some poor coder may come accross the rambling about the SQL and spend an hour trying to figure it all out. On other sites I have found multiple ramblings about coding the C# to correct the error. All along it is simply corrected in SSMS. Perhaps some people like to look clever when they are afflicted with analysis paralysis & should instead be maximizing the tools available to be productive. Also I dont care if a thread is 1000 years old - if I have a contribution I will make it.
CHill60
Я не ошибаюсь - или если я ошибаюсь, то документация Microsoft также должна ошибаться. Вряд ли.
SSMS ничего не реализует "в SQL". Все пользователи программы не должны иметь устройств самообслуживания, установленных на их набор. Все, что вы продемонстрировали в своем ответе,-это то, что вы не знаете, как разрабатывать приложения, использующие базы данных SQL Server в среде, не являющейся средой разработки.
Очевидно, я не единственный, кто заметил, что ваше "решение" было отвергнуто. Мой совет все еще остается в силе