a 라는 함수가 실행 되었을때
test1 테이블에서 id가 1인 놈을 삭제
test2 테이블에서 id가 2인 놈을 삭제
a = async (id) => {
const transaction = await sequelize.transaction();
try {
await test1.destroy(
{
where: { id },
},
{ transaction }
);
await test2.destroy(
{
where: { id },
},
{ transaction }
);
await transaction.commit();
} catch (err) {
await transaction.rollback();
}
};
}
이렇게 코드를 짰는데 계속 rollback 함수가 실행됨.
어디서 rollback 되는지 터미널 창을 보니 test1.destroy 부분에서 실패함.
이때 err 를 콘솔로 찍어봤어야 했는데 그 생각은 전혀 하지못함..
그렇게 2~3시간을 날리고
다른분께 여쭤보니 err를 한번 찍어보자 하심.
Cannot delete or update a parent row: a foreign key constraint fails |
이런 에러가 떠서 구글링 해보니 관계설정때문이라 함..
그래서 아차 든 생각이 test2에 있는 id가 test1의 id를 참조하도록 관계설정을 함..
즉 test2의 id 는 test1의 id가 존재해야 하는데
코드 상에서 test1의 id를 삭제할려고 하니 당연히 실패하는 것임..
test1과 test2 삭제 순서를 바꿔주니 아주 잘 돌아감.. ^^
'긁적..' 카테고리의 다른 글
티스토리 단축키 (0) | 2023.08.04 |
---|---|
프로퍼티 ( PROPERTY ) (0) | 2023.08.02 |
home 버튼 / prev,next 버튼 ( 해결 ) (0) | 2023.06.08 |
home 버튼 / prev,next 버튼 (1) | 2023.06.07 |
상세페이지 연결 localStorage / setTime, getTime (0) | 2023.06.05 |