데이터베이스 관리에서 외래 키는 테이블 간 데이터를 연결하여 참조 무결성을 강화합니다. 기본적으로 대부분의 데이터베이스 시스템은 상위 레코드가 삭제되면 하위 레코드도 삭제하는 "ON DELETE CASCADE" 동작으로 외래 키를 설정합니다.
그러나 이 동작을 " 삭제 시 제한됩니다." 이 변경으로 인해 기존 하위 레코드가 있는 경우 상위 레코드가 삭제되지 않습니다.
참조 작업을 변경하려면 먼저 기존 제약 조건을 삭제해야 합니다. 다음 구문을 사용하십시오.
ALTER TABLE table_name DROP FOREIGN KEY constraint_name;
"table_name"을 외래 키가 포함된 테이블 이름으로 바꾸고 "constraint_name"을 기존 제약 조건의 이름으로 바꿉니다.
이전 제약 조건이 삭제되면 원하는 참조 작업이 포함된 새 제약 조건을 추가할 수 있습니다. 다음 구문을 사용하십시오.
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY (column_name) REFERENCES referenced_table(referenced_column) ON DELETE RESTRICT;
"table_name"을 이전과 동일한 테이블로 바꾸고, "constraint_name"을 새 제약 조건의 이름으로 바꾸고, "column_name"을 외래 키 열로 바꾸고, "referenced_table"을 참조된 테이블로 바꿉니다. , 및 "referenced_column"을 참조 테이블의 참조 열로 설정합니다.
다음 테이블 구조를 고려하세요.
CREATE TABLE UserDetails ( Detail_id INT PRIMARY KEY, User_id INT NOT NULL, FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE CASCADE );
참조 작업을 "ON DELETE RESTRICT"로 변경하려면 다음 단계를 따르세요.
기존 삭제 제약 조건:
ALTER TABLE UserDetails DROP FOREIGN KEY FK_User_id;
새 제약 조건 추가:
ALTER TABLE UserDetails ADD CONSTRAINT FK_User_id FOREIGN KEY (User_id) REFERENCES Users (User_id) ON DELETE RESTRICT;
변경 후 "사용자" 테이블에서 레코드 삭제 더 이상 "UserDetails" 테이블에 삭제가 계단식으로 적용되지 않습니다. "Users"의 상위 레코드를 참조하는 "UserDetails"에 기존 하위 레코드가 있는 경우 삭제가 제한됩니다.
위 내용은 외래 키에 대해 ON DELETE CASCADE를 ON DELETE RESTRICT로 변경하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!