Noah_Developer
Developer Noah
Noah_Developer
전체 방문자
오늘
어제
  • 전체보기 (87)
    • Programmers (33)
      • Level1 (33)
    • FRONT-END (3)
      • React (2)
      • HTML (0)
      • CSS (0)
      • JavaScrpit (1)
    • BACK-END (23)
      • JAVA (14)
      • C (0)
      • Spring (5)
    • DATABASE (11)
      • MySQL (3)
      • Oracle (0)
    • IDE (2)
      • IntelliJ (2)
      • Eclipse (0)
      • VSCode (0)
    • Android (1)
    • 용어 (2)
      • 금융 (2)
    • Developer Diary (5)
      • Web (1)
    • 자격증 (1)
    • Operating System (3)
      • Linux (2)
    • Info (2)

블로그 메뉴

  • 홈
  • 방명록
  • 포트폴리오
  • 깃허브

공지사항

  • 🙏 방문 감사합니다.

인기 글

태그

  • 크레인 인형뽑기 풀이
  • 자바 쉬운 알고리즘
  • 코딩테스트 문제
  • level1
  • 카카오 블라인드 테스트
  • 코딩테스트 준비
  • 코딩테스트
  • String StringBuilder 차이
  • 알고리즘 문제
  • 알고리즘 예제
  • 알고리즘 쉬운문제
  • 크레인 인형뽑기 정답
  • 개발일기
  • 프로그래머스 코딩연습
  • 프로그래머스 연습문제
  • programmers
  • MySQL
  • 카카오공채
  • 자바 알고리즘 연습문제
  • 알고리즘 연습문제
  • programmers level 1
  • 프로그래머스 레벨1
  • 프로그래머스 문제풀이
  • 초보자 알고리즘
  • 알고리즘 블로그
  • 알고리즘 풀이
  • 프로그래머스
  • 크레인 인형뽑기
  • 코딩테스트 문제 풀이
  • 카카오 블라인드

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
Noah_Developer

Developer Noah

[MySQL] 데이터베이스 제약 조건 확인 하는 방법
DATABASE/MySQL

[MySQL] 데이터베이스 제약 조건 확인 하는 방법

2022. 8. 18. 17:49
728x90

회사 업무에서 데이터 원복을 위해 삭제해야하는 일이 생겼다.

그래서 별 생각없이 늘 하던대로 정산 데이터를 삭제하려고 했는데 생각보다 복잡했다.

시스템 버전이 있는데 현재는 거의 폐기 수준의 로우 버전이라 참조하고 있는 테이블도 달랐고 제약조건에 따라 순서대로 지워야 하였지만 테이블 제약 조건을 확인하고 지우는 방법을 터득하기 위해 여러번 뒹글고 나서 정리한다.

🤔 제약 조건 확인 방법

SELECT * 
FROM information_schema.key_column_usage 
WHERE TABLE_SCHEMA = '스키마' AND REFFERENCED_TABLE_NAME = '테이블명';

우선, 제약 조건을 확인하기 위해서는 삭제 하려는 데이터의 테이블이 어디에서 참조 하고 있는지를 알아야한다. 상단 쿼리로 스키마와 테이블을 설정하여 조회하면 확인이 가능하다.

SELECT * 
FROM information_schema.table_constraints 
WHERE TABLE_SCHEMA = '스키마' AND TABLE_NAME = '테이블명'

참조하고 있는 테이블에서 제약 조건이 어떻게 되어 있는지 확인 할 수 있다.

🙄 그래서 확인 하고 나서는 뭘 해야하지?

관계형 데이터베이스에서 무결성 원칙에 따라야 한다.

연관된 모든 데이터를 삭제한다는 것이다.

모든 연관된 테이블을 도출하고 어떤 테이블이 최상위 부모이고 어떤 테이블이 최하위 자식인지 그림이 그려져야 한다.

그림이 그려졌다면 그려진 그림에 따라 삭제 쿼리를 도출해서 제약조건에 어긋나지 않는 순서대로 삭제를 진행 할 수 있을 것이다.

😦 모든 연관된 데이터를 한번에 삭제하기 위해 제약조건에 ON DELETE CASCADE를 적용하면 되지만, 이는 원치 않는 데이터가 삭제 될 수 있기 때문에 심사숙고해서 결정해야한다고 생각한다.

728x90
저작자표시 (새창열림)

'DATABASE > MySQL' 카테고리의 다른 글

[MySQL] Lost Connection to MySQL server during query  (0) 2022.08.17
[MySQL] 내가 본 최악의 데이터 생성 쿼리문  (0) 2021.04.20
    'DATABASE/MySQL' 카테고리의 다른 글
    • [MySQL] Lost Connection to MySQL server during query
    • [MySQL] 내가 본 최악의 데이터 생성 쿼리문
    Noah_Developer
    Noah_Developer
    개발 기록 목적을 가진 블로그입니다.

    티스토리툴바