Оператор DELETE конфликтует с ограничением REFERENCE, каскадное удаление

Я хочу удалить пользовательскую форму dbo.Gebruiker, когда я запускаю свой запрос, я получаю это сообщение об ошибке.

The DELETE statement conflicted with the REFERENCE constraint "FK_Klant_Gebruiker_beheerderid". The conflict occurred in database "Planning", table "dbo.Klant", column 'BeheerderId'.

После прочтения на форуме они сказали, что сначала мне нужно удалить из другой таблицы, поэтому, когда я запускаю свой запрос, я снова получаю другое сообщение

The DELETE statement conflicted with the REFERENCE constraint "FK_Gebruiker_Klant". The conflict occurred in database "Planning", table "dbo.Gebruiker", column 'KlantId'.

Когда я запускаю этот запрос, чтобы увидеть, существуют ли эти столбцы

select * from dbo.Gebruiker where KlantId='1CA25570-1A02-42FC-836D-4897B95EF44A'

он ничего не показывает.

После чтения в Google и на форумах они говорят, что сначала я должен удалить ограничение внешнего ключа.

Еще ставлю helpConstraint

Оператор DELETE конфликтует с ограничением REFERENCE, каскадное удаление

Оператор DELETE конфликтует с ограничением REFERENCE, каскадное удаление

Как лучше всего удалить пользователя из "dbo.Gebruiker", пожалуйста?

GebruikerTable и зависимости KlantTable и зависимости

Оператор DELETE конфликтует с ограничением REFERENCE, каскадное удаление

Оператор DELETE конфликтует с ограничением REFERENCE, каскадное удаление

Оператор DELETE конфликтует с ограничением REFERENCE, каскадное удаление

Оператор DELETE конфликтует с ограничением REFERENCE, каскадное удаление

Похоже, у вас есть ссылки круговой. Однако, не видя определения таблиц, не имея каких-либо примеров данных и не зная, какие фактические операторы delete, которые вы выполняете, вызывают эти ошибки, трудно быть уверенным. Если у вас есть циклические ссылки, вам сначала нужно будет указать UPDATE в одной из таблиц, чтобы она больше не ссылалась на строку из другой таблицы, из которой вы пытаетесь удалить.

Damien_The_Unbeliever 25.04.2018 10:58

Т.е. если Google Translate работает для меня, похоже, у вас есть таблица Customers и таблица Users. Все Users принадлежат к Customer, и каждый Customer имеет один специальный User, идентифицированный как Administrator. Вы не можете удалить строку из таблицы Users, если этот пользователь является текущим администратором клиента а. Если вы неправильно построили свою целостность, вполне возможно, что администратор не обязан быть пользователем для этого клиента.

Damien_The_Unbeliever 25.04.2018 11:01

Может ли Gebruiker быть Beheerder? Можете ли вы показать нам данные в таблице Gebruiker, которые вы пытаетесь удалить?

SchmitzIT 25.04.2018 11:14

@Damien_The_Unbeliever да, вы абсолютно правы, как это сделал гугл переводчик.

bizimunda 25.04.2018 13:14

@SchmitzIT Я поставил больше изображений

bizimunda 25.04.2018 13:18

@ user2983359 Я вижу те же изображения, что и раньше.

SchmitzIT 25.04.2018 13:21

@SchmitzIT проверьте сейчас, пожалуйста

bizimunda 25.04.2018 13:22

Последнее изображение, которое вы добавили, показывает отношения внешнего ключа на BeheerderId. На какую таблицу / столбец это указывает? (Надеюсь, это указывает на GebruikerId в таблице Gebruiker. Если это так, то что вам показывает следующий запрос? select beheerderId из dbo.Klant, где KlantId = '1CA25570-1A02-42FC-836D-4897B95EF44A'. Then use that BeheerderID and run this: SELECT GebruikerID, KlantGiker GebruikerID, KlantIDe FROM dbo.KlantID = <% beheerderid%> `. Замените <% beheerderid%> значением, которое вы нашли ранее.

SchmitzIT 25.04.2018 13:34

@SchmitzIT, когда я запускаю этот запрос, выберите beheerderId из dbo.Klant, где KlantId = '1CA25570-1A02-42FC-836D-4897B95EF44A' Он ничего не показывает. Пустой

bizimunda 25.04.2018 13:36

Позвольте нам продолжить обсуждение в чате.

bizimunda 25.04.2018 13:39

@SchmitzIT извините, я сделал ошибку, теперь у меня есть значение GebruikerID и KlantID, GebruikerID 1CA25570-1A02-42FC-836D-4897B95EF44A KlantID 069AFB05-5C31-452F-9563-4A148BFC294C

bizimunda 25.04.2018 13:45

Я в чате, но на работе, поэтому могу не сразу ответить

SchmitzIT 25.04.2018 13:52
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
12
844
1

Ответы 1

В общих чертах, если вы хотите удалить строку, идентификатор которой является FK в другой таблице, и вы не используете автоматическое правило DELETE (например, CASCADE), вам нужно что-то сделать со строками в зависимой таблице (таблицах) перед база данных позволит вам выполнить УДАЛЕНИЕ.

Похоже, это ваша проблема, поэтому вам нужно подумать, что делать со строками зависимой таблицы (таблиц), которые в настоящее время относятся к ключевому значению строки, которую вы собираетесь удалить.

большое спасибо за ваш комментарий. Моя база данных находится в круговой справочной форме. Есть идеи, как это сделать аккуратно?

bizimunda 25.04.2018 17:51

Другие вопросы по теме

Перенесенный пакет служб SSIS не работает, поскольку не определена схема с кодом «Недопустимое имя объекта»
Northwind - Сколько стран обработал один грузоотправитель за год
Прерывистое исключение IndexOutOfRangeException предполагает отсутствие столбца SQL, но устраняется повторным циклом IIS
Обеспечение поддержки Entity Framework переименований таблиц / столбцов
Как записать вывод - восстановить verifyonly с disk = "c: \ common \ backups" в sql?
Дата трансляции с nvarchar, не работающим в запросе sql
Создайте хранимую процедуру, которая объединяет несколько таблиц в текущую таблицу
Как узнать количество пользователей как для сообщений, так и для комментариев по определенным тегам?
Разрывы строк в SQL Server игнорируются при копировании из таблицы
Как проверить, какая хранимая процедура / функция вставляет / удаляет / обновляет данные в определенной таблице с отметкой времени на сервере SQL