본문 바로가기
backend

[Prisma] $executeRawUnsafe와 $queryRawUnsafe() 차이

by BK0625 2025. 4. 22.
반응형

 

$executeRawUnsafe()와 $queryRawUnsafe()는 둘 다 Prisma에서 raw query를 직접 실행할 때 사용하는 함수이다. 하지만 당연히 차이가 있기 때문에 나눠진게 아니겠는가? 그 차이를 알아보자.

 

$executeRawUnsafe()

이 함수는 INSERT/UPDATE/DELETE 같은 실행만하고 결과를 받지 않는 쿼리에서 사용이 된다. 이 함수의 리턴 값은 쿼리에 의해 영향 받은 row의 수를 리턴하게 된다. 따라서 결과 데이터는 받을 수 없다.

 

const count = await prisma.$executeRawUnsafe(
  `UPDATE "User" SET active = false WHERE last_login < now() - interval '1 year'`
);

console.log(count); // 예: 5

 

 

$queryRawUnSafe()

 

이 함수는 SELECT 또는 RETURNING 결과를 받아야 하는 쿼리에 사용된다. 리턴 값은 배열 형태의 결과 데이터가 된다.

 

const result = await prisma.$queryRawUnsafe(
  `INSERT INTO "User" (name) VALUES ($1) RETURNING id`,
  'Alice'
);

console.log(result); // [ { id: 123 } ]

 

 

두 함수는 쿼리가 동일하다면 불필요한 결과를 수신할 수 있다는 점을 제외하고는 성능 차이는 거의 없다고 한다!

 

따라서 간단한 실행만 하고 싶으면 $executeRawUnsafe를, 실행 후 결과 값까지 받고 싶다면 $queryRawUnsafe를 사용하면 된다.

반응형