데이터베이스 작업을 처리할 때 동적 값을 테이블 이름으로 사용해야 하는 경우가 많습니다. 이는 쿼리 실행 중에 테이블 이름이 결정되는 동적 SQL을 통해 달성할 수 있습니다.
PostgreSQL에서는 DO 블록 또는 PL/PgSQL 함수 내의 PL/PgSQL EXECUTE 문을 사용하여 동적 SQL을 구현할 수 있습니다. 일반 SQL은 동적 SQL을 지원하지 않습니다.
예를 들어 쿼리 결과를 사용하여 후속 쿼리에 대한 테이블 이름을 동적으로 결정하는 목표를 생각해 보세요.
쿼리 테이블 이름 얻기:
SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')
원하는 후속 쿼리:
CREATE TABLE (SELECT 'backup_' || TO_CHAR(CURRENT_DATE,'yyyy-mm-dd')) AS * SELECT FROM backup
PL/PgSQL을 사용하는 솔루션 EXECUTE:
DO $$ BEGIN EXECUTE format('CREATE TABLE %I AS SELECT * FROM backup', 'backup_' || to_char(CURRENT_DATE,'yyyy-mm-dd')); END; $$ LANGUAGE plpgsql;
설명:
format(...) 함수는 동적 SQL 문을 구성하는 데 사용됩니다. %I 형식 지정자는 테이블/열 이름의 올바른 인용을 보장합니다.
참고:
리터럴 값의 경우 EXECUTE ... USING 대신 EXECUTE ... USING을 사용하는 것이 좋습니다. 형식(...)을 %L로 지정합니다. 그러나 테이블 이름과 같은 식별자의 경우 %I 패턴 형식이 quote_ident를 사용하는 것보다 편리한 대안입니다.
위 내용은 PostgreSQL에서 동적 값을 테이블 이름으로 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!