Я хочу удалить пользовательскую форму 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
Как лучше всего удалить пользователя из "dbo.Gebruiker", пожалуйста?
GebruikerTable и зависимости KlantTable и зависимости
Т.е. если Google Translate работает для меня, похоже, у вас есть таблица Customers и таблица Users. Все Users принадлежат к Customer, и каждый Customer имеет один специальный User, идентифицированный как Administrator. Вы не можете удалить строку из таблицы Users, если этот пользователь является текущим администратором клиента а. Если вы неправильно построили свою целостность, вполне возможно, что администратор не обязан быть пользователем для этого клиента.
Может ли Gebruiker быть Beheerder? Можете ли вы показать нам данные в таблице Gebruiker, которые вы пытаетесь удалить?
@Damien_The_Unbeliever да, вы абсолютно правы, как это сделал гугл переводчик.
@SchmitzIT Я поставил больше изображений
@ user2983359 Я вижу те же изображения, что и раньше.
@SchmitzIT проверьте сейчас, пожалуйста
Последнее изображение, которое вы добавили, показывает отношения внешнего ключа на 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, когда я запускаю этот запрос, выберите beheerderId из dbo.Klant, где KlantId = '1CA25570-1A02-42FC-836D-4897B95EF44A' Он ничего не показывает. Пустой
Позвольте нам продолжить обсуждение в чате.
@SchmitzIT извините, я сделал ошибку, теперь у меня есть значение GebruikerID и KlantID, GebruikerID 1CA25570-1A02-42FC-836D-4897B95EF44A KlantID 069AFB05-5C31-452F-9563-4A148BFC294C
Я в чате, но на работе, поэтому могу не сразу ответить


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