> 데이터 베이스 > MySQL 튜토리얼 > 아직 존재하지 않는 경우에만 PostgreSQL 역할을 생성하는 방법은 무엇입니까?

아직 존재하지 않는 경우에만 PostgreSQL 역할을 생성하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-20 02:37:09
원래의
149명이 탐색했습니다.

How to Create a PostgreSQL Role Only if It Doesn't Already Exist?

존재하지 않는 경우 PostgreSQL ROLE(사용자) 생성

문제:

CREATE ROLE 문을 사용하여 PostgreSQL 역할을 생성하면 오류가 발생합니다. 역할이 이미 존재하는 경우. 존재하지 않는 경우에만 역할을 어떻게 생성합니까?

해결책:

PL/pgSQL 코드 블록과 함께 DO 문을 사용하여 역할 생성을 수행합니다. 조건부:

DO
$do$
BEGIN
   IF EXISTS (
      SELECT FROM pg_catalog.pg_roles
      WHERE  rolname = 'my_user') THEN

      RAISE NOTICE 'Role "my_user" already exists. Skipping.';
   ELSE
      CREATE ROLE my_user LOGIN PASSWORD 'my_password';
   END IF;
END
$do$;
로그인 후 복사

최적화:

잠재적인 경쟁 조건과 성능 오버헤드를 방지하려면 예외 처리 메커니즘 내에서 중첩 블록을 사용하는 것을 고려하세요.

DO
$do$
BEGIN
   IF EXISTS (
      SELECT FROM pg_catalog.pg_roles
      WHERE  rolname = 'my_user') THEN

      RAISE NOTICE 'Role "my_user" already exists. Skipping.';
   ELSE
      BEGIN   -- nested block
         CREATE ROLE my_user LOGIN PASSWORD 'my_password';
      EXCEPTION
         WHEN duplicate_object THEN
            RAISE NOTICE 'Role "my_user" was just created by a concurrent transaction. Skipping.';
      END;
   END IF;
END
$do$;
로그인 후 복사

위 내용은 아직 존재하지 않는 경우에만 PostgreSQL 역할을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿