쿼리를 실행해서 반환되는 메타데이터 객체 속성들

Songss·2024년 12월 2일

DBMS

목록 보기
10/20
.delete((req, res) => {
    let { email } = req.body;

    conn.query(
      `DELETE FROM users WHERE email = ?`,
      email,
      function (err, results) {
        res.status(200).json(results);
      }
    );
  });

DELETE API 요청을 처리하고 res.status(200).json(results); 에서 아래 코드와 같은 객체가 반환되게 됩니다.

{
    "fieldCount": 0,
    "affectedRows": 1,
    "insertId": 0,
    "info": "",
    "serverStatus": 2,
    "warningStatus": 0,
    "changedRows": 0
}

이 데이터는 MySQL 쿼리를 실행한 결과로 반환된 메타데이터 객체입니다. MySQL에서 INSERT, UPDATE, DELETE와 같은 쿼리를 실행했을 때, 데이터베이스에 영향을 준 정보와 상태를 나타냅니다. mysql2 라이브러리는 이런 정보를 객체로 반환합니다.

각 속성의 의미:

  1. fieldCount:
    • 기본값은 0으로, SELECT 쿼리에서 반환된 컬럼 수를 나타냅니다.
    • 이 경우는 INSERT, UPDATE, 또는 DELETE 쿼리일 가능성이 높아 0으로 설정됩니다.
  2. affectedRows:
    • 쿼리로 인해 영향을 받은 (변경되거나 삭제된) 행(row)의 개수입니다.
    • 예를 들어, 데이터베이스에서 행을 삽입하거나 삭제했을 때, 이 속성은 그 영향을 받은 행의 수를 나타냅니다.
    • 여기서는 1, 즉 한 행이 영향을 받았음을 의미합니다.
  3. insertId:
    • INSERT 쿼리에서 새로 삽입된 행의 ID를 나타냅니다.
    • Auto Increment 설정이 되어 있는 컬럼의 값이 여기에 반환됩니다.
    • 여기서는 0, 즉 새로 삽입된 ID가 없거나 관련 쿼리가 INSERT가 아니었음을 나타냅니다.
  4. info:
    • 쿼리에 대한 추가 정보를 나타냅니다.
    • 대부분의 경우, 간단한 문자열 형태로 반환되며, 이 값이 비어 있다면 특별한 추가 정보가 없는 상태입니다.
  5. serverStatus:
    • MySQL 서버의 현재 상태를 나타냅니다.
    • 2는 "자동 커밋 상태"를 의미합니다.
  6. warningStatus:
    • 경고가 발생했는지 여부를 나타냅니다.
    • 0이면 경고가 없고, 1 이상이면 경고가 발생했음을 나타냅니다.
  7. changedRows:
    • UPDATE 쿼리에서 실제로 변경된 행(row)의 수를 나타냅니다.
    • 만약 값이 변경되지 않았거나 관련된 쿼리가 INSERT 또는 DELETE라면 0이 반환됩니다.

0개의 댓글