복붙노트

[SQL] 나는 오류 "참조 제약 조건과 충돌 DELETE 문"을 가지고

SQL

나는 오류 "참조 제약 조건과 충돌 DELETE 문"을 가지고

나는 외래 키가있는 테이블을 절단하려하고 메시지를 가지고 :

나는 문제에 대해 문헌을 많이 읽고 내가 삭제를 사용하여 해결책을 찾을 수 있다고 생각

DELETE FROM table_name DBCC CHECKIDENT (table_name, RESEED, 0)

하지만 난 여전히 오류 메시지를 받았습니다 :

나는 Microsoft 관리 Studio에서 삭제하려고하고 이전 쿼리를 실행할 때

DELETE FROM table_name DBCC CHECKIDENT (table_name, RESEED, 0)

그것은 오류를주고 제대로 작동하지 않습니다. 나는 테이블에서 모든 정보를 삭제하고 그것으로 새로운 추가 할 수 있지만 삭제하고 외래 키를 생성하고 싶지 않아요.

해결법

  1. ==============================

    1.오류 수단은 당신이 참조가 당신이하려고하는 데이터를 삭제하는 것을 다른 테이블의 데이터를 가지고있다.

    오류 수단은 당신이 참조가 당신이하려고하는 데이터를 삭제하는 것을 다른 테이블의 데이터를 가지고있다.

    당신도 드롭 필요하고, 외래 키가 참조 데이터를 제약 조건을 다시 만들거나 삭제합니다.

    다음과 같은 테이블이 있다고 가정

    dbo.Students
    (
    StudentId
    StudentName
    StudentTypeId
    )
    
    
    dbo.StudentTypes
    (
    StudentTypeId
    StudentType
    )
    

    외국 주요 제약 StudentTypes에서 StudentTypeId 열 및 학생들의 StudentTypeId 열 사이에 존재한다고 가정

    당신이 StudentTypes의 모든 데이터를 삭제하려고하면 학생들은 StudentTypes 테이블의 데이터를 참조에 오류가 StudentTypeId 컬럼으로 발생합니다.

    편집하다:

    DELETE와 TRUNCATE 본질적으로 같은 일을. 유일한 차이는 로그 파일에 변경 내용을 저장하지 않는 TRUNCATE입니다. 또한 당신은 TRUNCATE과 WHERE 절을 사용할 수 없습니다

    당신이 SSMS에서이 작업을 실행할 수 있습니다 이유에 있지만 당신의 응용 프로그램을 통해. 난 정말 이런 일을 볼 수 없습니다. FK 제약은 여전히 ​​관계없이 트랜잭션이 어디에서 유래의 오류가 발생합니다.

  2. ==============================

    2.어디 관련 DELETE CASCADE ON 적용 할 것을 고려 적이 있습니까?

    어디 관련 DELETE CASCADE ON 적용 할 것을 고려 적이 있습니까?

  3. ==============================

    3.당신은 (아마도 다른 테이블에있는) 다른 행 참조하는 행을 삭제하려고합니다.

    당신은 (아마도 다른 테이블에있는) 다른 행 참조하는 행을 삭제하려고합니다.

    당신은 (또는 적어도 다시 설정 뭔가 다른 외국 키)를, 그렇지 않으면 행 참조가 존재하지 않는 행으로 끝날 것 먼저 행을 삭제해야합니다. 데이터베이스는 금지.

  4. ==============================

    4., 삭제하려면 참조를 변경하지 않고, 먼저 삭제해야하거나 다른 테이블에서 모든 관련 행 (당신의 목적에 적합한 방식으로) 변경합니다.

    , 삭제하려면 참조를 변경하지 않고, 먼저 삭제해야하거나 다른 테이블에서 모든 관련 행 (당신의 목적에 적합한 방식으로) 변경합니다.

    TRUNCATE에 당신은 참조를 제거해야합니다. TRUNCATE는 (CREATE 비교 및 ​​DROP)는 DDL 문이 아닌 (INSERT와 DELETE 같이) DML 문이며, 트리거 원인, 명시 적 또는 참조 및 기타 제한 조건과 연관된 사람들이 해고 여부를 않습니다. TRUNCATE는 참조가 테이블에서 허용 된 경우이 때문에, 데이터베이스가 일관성없는 상태로 될 수있다. 이 TRUNCATE는 일부 시스템에서 사용되는 표준의 확장, 그리고 지금이 추가되었는지는 표준에서 요구 될 때 규칙이었다.

  5. from https://stackoverflow.com/questions/3776269/i-got-error-the-delete-statement-conflicted-with-the-reference-constraint by cc-by-sa and MIT license