집 >데이터 베이스 >MySQL 튜토리얼 >Mysq에서 테스트 상위 테이블, 하위 테이블 및 테스트 사례 설정 요약
select version(); 5.7.22
drop table if exists Models; CREATE TABLE Models ( ModelID SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, Name VARCHAR(40) NOT NULL, PRIMARY KEY (ModelID) );
drop table if exists Orders; CREATE TABLE Orders ( ID SMALLINT UNSIGNED NOT NULL PRIMARY KEY, ModelID SMALLINT UNSIGNED NOT NULL, Description VARCHAR(40), FOREIGN KEY (ModelID) REFERENCES Models (ModelID) ON DELETE cascade );#🎜🎜 #테스트테스트 사례 - 상위 테이블에 해당 데이터가 없습니다. 하위 테이블을 먼저 삽입하세요
insert into Orders(Id,ModelID,Description) values (1,1,'a');
예외: [2018- 07-31 11: 08:01] 23000 하위 행을 추가하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다. (bov
.Orders
, CONSTRAINT Orders_ibfk_1
FOREIGN KEY (ModelID) REFERENCES Models
(ModelID
) ON DELETE CASCADE)
Reason: 외래 키 제약 조건 검사를 통과하지 못했습니다. 캐스케이드 삭제 시#🎜🎜 #bov
.Orders
, CONSTRAINT Orders_ibfk_1
FOREIGN KEY (ModelID
) REFERENCES Models
(ModelID
) ON DELETE CASCADE)
原因:通不过on delete cascade 的外键约束检查
insert into Models(ModelID,Name) values (1,'a'); insert into Orders(Id,ModelID,Description) values (1,1,'a');
结果:执行成功
select * from Models; 1 a select * from Orders; 1 1 a
delete from Orders where id = 1;
结果:执行成功
select * from Models; 1 a select * from Orders; 为空
delete from Models where ModelID = 1;
结果:执行成功
select * from Models; 为空 select * from Orders; 为空
update Orders set ModelID = 3 where ID =1;
结果:执行失败
异常:[2018-07-31 12:33:02] 23000 Cannot add or update a child row: a foreign key constraint fails (bov
.Orders
, CONSTRAINT Orders_ibfk_1
FOREIGN KEY (ModelID
) REFERENCES Models
(ModelID
) ON DELETE CASCADE)
原因:通不过on delete cascade 的外键约束检查
update Models set ModelID = 2 where ModelID =1;
结果:执行失败
异常:[2018-07-31 12:34:24] 23000 Cannot delete or update a parent row: a foreign key constraint fails (bov
.Orders
, CONSTRAINT Orders_ibfk_1
FOREIGN KEY (ModelID
) REFERENCES Models
(ModelID
테스트 사례 - 기본 테이블 데이터를 먼저 삽입한 후 하위 테이블 데이터를 삽입
update Orders set Description = 'b' where ID =1;결과: 실행 성공
select * from Orders; 1 1 b
update Models set Name = 'c' where ModelID =1;결과: 실행 성공
select * from Models; 1 c
rrreee
결과: 실행 성공rrreee
테스트 사례 - 상위 테이블과 하위 테이블 모두 데이터가 있고, 하위 테이블 외래 키 업데이트
결과: 실행 failedException: [2018-07-31 12:33:02] 23000 하위 행을 추가하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다(bov
.Orders
). >, CONSTRAINT Orders_ibfk_1
FOREIGN KEY (ModelID
) 참조 모델
(ModelID
) ON DELETE CASCADE) 이유: 계단식 삭제 시 외래 키 제약 조건 검사를 통과하지 못했습니다# 🎜🎜#
rrreeeResult : 실행 실패예외: [2018-07-31 12:34:24 ] 23000 상위 행을 삭제하거나 업데이트할 수 없습니다. 외래 키 제약 조건이 실패합니다(bov
.Orders, CONSTRAINT <code>Orders_ibfk_1
FOREIGN KEY (ModelID
) REFERENCES Models
(ModelID
) ON DELETE CASCADE)#🎜 🎜#이유: 연속 삭제 시 외래 키 제약 조건 검사를 통과하지 못했습니다
rrreee# 🎜🎜#결과: 실행 성공
rrreee테스트 사례 - 상위 테이블과 하위 테이블 모두에 데이터가 있고 기본 키가 아닌 상위 테이블 업데이트rrreee결과: 실행 성공# 🎜🎜#rrreee
관련글 : #🎜🎜##🎜🎜##🎜🎜##🎜🎜#Mysql 데이터베이스 인덱스 구축 및 성능 테스트 #🎜🎜##🎜🎜##🎜🎜##🎜🎜# mysql 고성능 스트레스 테스트 (오랜만에 요약 #🎜🎜#) #🎜🎜##🎜🎜#관련 영상: #🎜🎜##🎜🎜 ##🎜🎜#데이터 구조 모험: 선형 테이블#🎜🎜## 🎜🎜#위 내용은 Mysq에서 테스트 상위 테이블, 하위 테이블 및 테스트 사례 설정 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!