- 포스트그래스QL


https://www.postgresql.org/download/


매뉴얼
https://www.postgresql.org/docs/9.6/index.html


//=================
    - 설치 에러
there has boon an error.
an error occured executing the microsoft vc++ runtime installer

    - 해결 방법
postgresql-9.6.11-1-windows-x64.exe --install_runtimes 0



//=========
서버 시작
net start postgresql-x64-9.6

or

"c:\Program files\PostgreSQL\9.6\bin\pg_ctl.exe" -D "c:\program Files\PostgreSQL\9.6\data" start



//==========
pgAdmin 실행
    - 서버 시작시키고, 인터페이스는 웹

//============
용어
relation = table


//============
테이블에 자동증가 칼럼 만들기
예) test2 테이블의 id 칼럼 설정
type = int4
default = nextval('test2_id_seq'::regclass)

   
    - navicat 에서 serial4 등의 형식을 지정하려고 하면 자료형이 없다고 나오는 에러를 해결할수 있다.
   
    //=========
    - 에러
    - postresql nextval relation does not exist

    - 해결
    - sequence 만들기
CREATE  SEQUENCE  test2_id_seq START 1;

   
    //================
    - 모든 시퀀스 조회
SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';



//=======================
PL/pgSQL (Procedural Language/PostgreSQL) - 프로시저
    - Oracle의 PL/SQL PL/SQL (Procedural Language for SQL)

    - 네트워크 통신을 줄일수 있지만,

디버깅이 힘들고, DBMS가 바뀌면 모두 새로 개발

    - navicat p.proisagg column 에러
        - postgresql 버전을 11을 사용하고 있다면 9 대로 낮춘다

- navicat 에서 procedure (function) debugging
    - pldbgapi Extension 설치
        - DB 이름 -> Functions -> 우클릭
        -> Install pldbgapi Extension 선택 -> Install 버튼
       

- 프로시저 예제
CREATE OR REPLACE FUNCTION "public"."increment"("i" int4)
  RETURNS "pg_catalog"."int4" AS $BODY$
    DECLARE i2 integer;-- 변수 선언
   
    BEGIN       
            i2= i+ 1;
      RETURN i2;
    END;
    $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100


//======================
// 후기
프로시저(Stored Procedure, Function)을 디버깅하기 편하다고 해서(Navcat에서 지원) 써볼까 했는데
디버깅하는데 장님이 된 느낌이었다.
MySQL과 호환성도 떨어지고, 프로시저를 만들어도 DBMS종류가 바뀌면 호환성이 없어서 새로 작성해야 되니
그냥 C#에서 작성하는 게 나을 것 같다


반응형

'Code > Database (DB)' 카테고리의 다른 글

[C#] MySql  (0) 2019.02.11
[DB] MySQL 서버 InnoDB 관련 설정값 변경  (0) 2019.02.11
[SQL] MySql 프로시저(PROCEDURE )  (0) 2019.02.07
[SQL] 서브쿼리(SubQuery)  (0) 2019.02.07
SQL 정리 (JOIN, 연산자)  (0) 2018.11.08
Posted by codens