집 >데이터 베이스 >MySQL 튜토리얼 >상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다. - MySQL 오류 해결 방법: 상위 행에 외래 키 제약 조건이 있습니다.
MySQL 오류 해결 방법: 상위 행에 외래 키 제약 조건이 있으므로 특정 코드 예제가 필요합니다.
MySQL 데이터베이스를 사용하여 개발할 때 다음 오류 메시지가 자주 표시됩니다. "상위 행을 삭제하거나 업데이트할 수 없습니다: 외래 키 제약 조건이 실패했습니다."(상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 존재합니다.)
이 오류 메시지는 일반적으로 다른 테이블의 레코드에서 참조하는 행을 삭제하거나 업데이트하려고 할 때 나타납니다. 이 경우 MySQL은 외래 키 제약 조건에 따라 상위 행에 대한 삭제 또는 업데이트 작업을 방지합니다. 이 문제를 해결하려면 외래 키 제약 조건을 적절하게 처리해야 합니다.
다음은 특정 코드 예제를 통해 이 문제를 해결하는 몇 가지 방법을 제공합니다.
예를 들어 orders
와 order_items
라는 두 개의 테이블이 있다고 가정해 보겠습니다. order_items
테이블의 order_id
필드는 orders
테이블의 주문에 대한 외래 키 참조입니다. orders
테이블에서 주문을 삭제하려면 먼저 order_items
테이블에서 해당 주문과 관련된 하위 행 데이터를 삭제해야 합니다. orders
和order_items
。order_items
表的order_id
字段是对orders
表中订单的外键引用。当我们要删除orders
表中的某个订单时,必须先删除order_items
表中与该订单相关的子行数据。
具体代码示例如下:
CREATE TABLE orders( id INT PRIMARY KEY, order_name VARCHAR(50) ); CREATE TABLE order_items( id INT PRIMARY KEY, order_id INT, item_name VARCHAR(50), FOREIGN KEY (order_id) REFERENCES orders(id) ON DELETE CASCADE );
在上面的代码中,我们在创建order_items
表时将order_id
字段设置为对orders
表的外键约束,并指定了ON DELETE CASCADE。这样,当我们删除orders
表中的某个订单时,与该订单相关的order_items
表中的记录也会被自动删除。
具体代码示例如下:
ALTER TABLE order_items DROP FOREIGN KEY fk_order_items_order_id;
上面的代码中,我们使用ALTER TABLE
语句来删除order_items
表中对orders
表的外键约束。
接下来,我们可以执行删除操作,如下所示:
DELETE FROM orders WHERE id = 1;
在执行上面的删除语句时,MySQL将不再验证与被删除行相关的外键约束,从而成功删除父行。
具体代码示例如下:
UPDATE order_items SET order_id = 2 WHERE order_id = 1; UPDATE orders SET id = 2 WHERE id = 1;
在上面的代码中,我们首先更新order_items
表中的外键引用,将之前引用父行ID为1的记录的order_id
字段值更新为2。然后,我们再更新orders
rrreee
위 코드에서는order_items
생성 시 order_id
필드를 orders
로 설정했습니다. 테이블에 대한 외래 키 제약 조건이 있고 ON DELETE CASCADE가 지정되어 있습니다. 이런 방식으로 orders
테이블에서 주문을 삭제하면 해당 주문과 관련된 order_items
테이블의 기록도 자동으로 삭제됩니다.
ON DELETE CASCADE를 설정하고 싶지 않거나 상위 행과 관련된 하위 행 데이터를 삭제할 수 없는 경우 먼저 외래 키 제약 조건을 해제하면 됩니다. 그런 다음 삭제하십시오.
🎜🎜구체적인 코드 예시는 다음과 같습니다. 🎜rrreee🎜위 코드에서는ALTER TABLE
문을 사용하여 order_items의 <code>orders
테이블을 삭제했습니다. 테이블 외래 키 제약 조건. 🎜🎜다음으로 아래와 같이 삭제 작업을 수행할 수 있습니다. 🎜rrreee🎜 위의 삭제 문을 실행하면 MySQL은 더 이상 삭제된 행과 관련된 외래 키 제약 조건을 검증하지 않으므로 상위 행이 성공적으로 삭제됩니다. 🎜order_items
테이블의 외래 키 참조를 이전에 상위 레코드를 참조했던 order_id로 업데이트합니다. 행 ID는 1입니다.
필드 값이 2로 업데이트됩니다. 그런 다음 orders
테이블에서 ID가 1인 레코드의 값을 2로 업데이트합니다. 🎜🎜이런 식으로 상위 행의 값을 성공적으로 업데이트했습니다. 🎜🎜요약: 🎜🎜MySQL 오류: "상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다."가 발생하면 상위 행과 관련된 하위 행 데이터를 삭제하고 외래 키 제약 조건을 해제하여 삭제하거나 업데이트할 수 있습니다. 이 문제를 해결하려면 상위 행의 값을 사용하세요. 특정 비즈니스 요구 사항 및 데이터 작업 조건에 따라 해당 처리 방법을 선택하고 외래 키 제약 조건 문제를 처리하기 위한 합리적인 코드를 작성합니다. 🎜위 내용은 상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다. - MySQL 오류 해결 방법: 상위 행에 외래 키 제약 조건이 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!