1

모든 것을 수동으로 확인하지 않고 데이터베이스의 완전 무결성을 검사하는 옵션이 있는지 궁금합니다. 필자는 SQL에 완전히 익숙하지 않고 참조 무결성을 검사하는 작업을해야한다고 언급해야합니다. 검색으로전체 데이터베이스에 대한 PHP SQL 참조 무결성 검사

나는이 질문에 발견 how to find records that violate referential integrity

이미 도움이되었다, 그러나 나는 테이블의 꽤 많이 가지고와 형식으로 querys의 수백을 writting보다 더 빠른 방법이 있다면 궁금 해서요 내가 찾은 질문의 돕는

감사합니다, Yíu

편집 : 나는 대부분의 데이터베이스가 자동으로 확인 알지만, 나는 학생입니다 및 작업은 "이 스크립트는 업데이트 및 데이터베이스의 참조 무결성을 설명해야한다고 말했습니다. ! 참조 무결성 (행 추가, 행 수정, 행 삭제)을 명시 적으로 지적하십시오. "

그래서 수동으로 확인해야합니다.

+0

이러한 검사는 데이터를 삽입하려고 할 때 MySQL에 의해 자동으로 수행됩니다 (수동으로 검사를 사용하지 않는 경우 + 이전에 구조에 참조 무결성을 추가 한 경우 +). – DanFromGermany

+0

수정 된 질문 –

답변

1

대부분의 데이터베이스는 MySQL과 마찬가지로 참조를 확인합니다. 그래서 MySQL의 페이지

CREATE TABLE parent (
    id INT NOT NULL, 
    PRIMARY KEY (id) 
) ENGINE=INNODB; 

CREATE TABLE child (
    id INT, 
    parent_id INT, 
    INDEX par_ind (parent_id), 
    FOREIGN KEY (parent_id) 
     REFERENCES parent(id) 
     ON DELETE CASCADE 
) ENGINE=INNODB; 

아이는 자동으로 확인하고 상위 행을 필요로에서 FOREIGN KEY보고 REFERENCES 명령

http://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

샘플을 가지고있다. 부모를 삭제하면 모든 자식 행이 (ON DELETE CASCADE)로 삭제됩니다.

+0

답변 해 주셔서 감사합니다. 불행히도 나는 연습상의 이유로 그것을 수동으로해야만한다고 생각한다 (편집 된 질문 참조). 당신이 두 번째 모습을 보일 수 있다면 좋을 것입니다. –

+0

ALTER TABLE을 사용하면 테이블 contrains을 추가 할 수 있습니다. – twyly

+0

@ Yíu 수동으로하지 마십시오. 그것은 손으로 할 의도가 아닙니다. 전혀 안전하지 않습니다. 당신이 필요로하는 부분은'FOREIGN KEY (...) REFERENCES (...) ON DELETE ...'또는'ON UPDATE' ... 연결된 문서를 보는 것입니다. – DanFromGermany