* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
|
Windows 11 64Bit |
|
|
CUBRID 11.4 |
|
|
CUBRID ADMIN 12.0 |
|
|
odbc(dbeaver는 jdbc) |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
| 에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
| 관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
cubrid database에서 update 또는 insert문으로 row 갱신 혹은 row 삽입 시,
갱신 혹은 삽입된 rows를 가져오는 함수가 있을 지 궁금합니다.
그리고 혹시 cubrid database의 현 table row 개수를 가져오는 함수도 있을 지 궁금합니다.
답변 주시면 감사하겠습니다.
큐브리드를 이용해 주셔서 감사합니다.
1. ROW_COUNT
- ROW_COUNT 함수는 가장 마지막에 수행된 UPDATE, INSERT, DELETE, REPLACE 문에 영향을 받는 행의 개수를 정수로 반환합니다. 이것을 이용하시면 될 듯 합니다.
- 매뉴얼 : https://www.cubrid.org/manual/ko/11.4/sql/function/information_fn.html#ROW_COUNT
2. table row개수
아시다시피 select count(*) from user_table 로 조회가 가능합니다.
CUBRID는 db_class에 생성된 유저테이블의 정보를 확인 할 수 는 있으나, 해당 테이블의 레코드 건수를 저장하고 있지는 않고 있습니다.
문의하신 것이 아마도 테이블별로 해당 테이블의 전체 레코드를 구하고자 하는 것으로 이해 됩니다.
그러하다면 두 가지 방법을 제안드립니다.
2-1. SQL 문장 생성
--system_table을 제외 하고, user_table만 검색
SELECT class_name FROM db_class WHERE is_system_class='NO';
-- 위 문장을 활용하여 select count(*) 문장을 생성
SELECT 'SELECT ''' || class_name || ''' AS table_name, COUNT(*) AS row_count FROM ' || class_name || ';'
FROM db_class
WHERE is_system_class = 'NO'
ORDER BY class_name;
-- 그러나, 각각의 테이블별로 검색됨는 불편함이 있습니다.
2.-2 SP를 생성하여 활용
--https://www.cubrid.com/faq/3794685 를 보시면 SP를 생성하여 조회하는 방법을 설명하고 있습니다. 이를 참고하여 활용해 보세요
감사합니다.