Удалить определенные значения из столбца

Я хочу удалить определенные значения / данные из одного столбца с условием WHERE.

Таблица 2_:

ID_CIVILITE CIV_LIBELLE
1           M.
2           Mme
3           Mlle
4           Aucun

DELETE FROM CIVILITE WHERE CIV_LIBELLE='Aucun';

Ошибка:

Оператор DELETE находится в конфликте с ограничением REFERENCE "FK_PERS_CIVILITE". Конфликт произошел в базе данных «DBDB», в таблице «dbo.PERSONNE», столбец «ID_CIVILITE».

Как удалить какое-то значение там, где есть ограничение ..?


person Mercer    schedule 02.05.2016    source источник
comment
Возможный дубликат инструкции DELETE противоречит REFERENCE   -  person Ullas    schedule 02.05.2016


Ответы (4)


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

ALTER TABLE [DBDB].[dbo].[PERSONNE] NOCHECK CONSTRAINT [FK_PERS_CIVILITE]

а затем вы можете удалить запись.

Убедитесь, что после удаления записи вы снова примените ограничение.

ALTER TABLE [DBDB].[dbo].[PERSONNE] WITH CHECK CONSTRAINT [FK_PERS_CIVILITE]
person Rahul Tripathi    schedule 02.05.2016
comment
Хорошая команда ALTER TABLE PERSONNE CHECK CONSTRAINT FK_PERS_CIVILITE - person Mercer; 02.05.2016

Кажется, что таблица CIVILITE столбец ID_CIVILITE является первичным ключом, сначала удалите похожие строки в указанной таблице, то есть в таблице внешнего ключа.

-- Run 1st
DELETE FROM [PERSONNE]
WHERE ID_CIVILITE IN
(SELECT CIVILITE WHERE CIV_LIBELLE='Aucun')
-- Run 2nd
DELETE CIVILITE WHERE CIV_LIBELLE='Aucun'
person Munna Extreme    schedule 02.05.2016

Либо вы DROP constraint, либо - что, вероятно, лучше - обновите данные в Personnes, чтобы ни одна запись не имела значения «Aucun». Вы можете установить его не Null, если это разрешено.

person Patrick Honorez    schedule 02.05.2016

У вас, вероятно, есть таблица типа PERSON, которая имеет ограничение внешнего ключа, например:

create table person (
    -- various columns
    civilite_id int,
    foreign key component civilite_id references civilite(id_civilite)
);

и в этой таблице должно быть несколько строк с civilite_id = 4.

Вы должны либо:

  • снять ограничение
  • удалить строки с этим вежливым
  • обновите строки, чтобы иметь нулевой civilite (если можете)
  • обновить строки на другой гражданский
person Bohemian♦    schedule 02.05.2016