2016-05-02 14 views
0

WHERE条件で特定の値/データを1つの列から削除したいとします。特定の値を列から削除する

CIVILITE

ID_CIVILITE CIV_LIBELLE 
1   M. 
2   Mme 
3   Mlle 
4   Aucun 

DELETE FROM CIVILITE WHERE CIV_LIBELLE='Aucun'; 

エラー:

The DELETE statement is in conflict with the constraint REFERENCE "FK_PERS_CIVILITE". The conflict occurred in database "DBDB", "dbo.PERSONNE" table, column 'ID_CIVILITE'.

がどのように制約があるいくつかの値を削除することができますか..?

+2

可能な重複にヌルcivilite(できれば)を持っている行

  • 更新行/ questions/15970893/the-delete-statement-with-the-reference) – Wanderer

  • 答えて

    2

    このエラーが発生する理由は、別の行で参照されている行を削除しようとしているためにエラーが発生したためです。したがって、参照行を削除するか、一時的に制約を削除してください。最初に次のようにテーブルを変更する必要があります。

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

    このレコードを削除することができます。

    レコードを削除したら、再び制約を適用してください。

    ALTER TABLE [DBDB].[dbo].[PERSONNE] WITH CHECK CONSTRAINT [FK_PERS_CIVILITE] 
    
    +1

    良いコマンドは 'ALTER TABLE PERSONNE CHECK CONSTRAINT FK_PERS_CIVILITE'です。 – Mercer

    1

    表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' 
    
    1

    あなたはDROPconstraint、または-probablyあなたbetter-どちらのレコードが値「Aucun」を持っていないようPersonnesのデータを更新。許可されている場合は、Nullに設定しないでください。

    1

    は、おそらくのような外部キー制約があるPERSONのようなテーブル、持っている:

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

    をして、このテーブルは4

    あなたがしなければならない

    のいずれかをcivilite_id =しているいくつかの行を持っている必要があります

    • このcivilite
    • で行を削除
    • 制約を削除
    • 更新[REFERENCEと競合DELETE文](http://stackoverflow.comの異なるcivilite
    関連する問題