> 안녕하세요?
> 다름이 아니고 php와 postgresql를 이용해서 공부한는 도중에 궁금한게 있
> 어서 이렇게 .......
> 데이타베이스와 연결을 한 뒤에
>
> pg_Exec($dbname, "begin");
>
> 와 같이 하는 데 이것의 정확한 뜻이 무엇인지 모르겠습니다. 데이타 베이
> 스와 연결한뒤 쿼리 넘기고 하는데 이와 같이 다시 begin하는게 어떤 의미
> 인지를요.. ^^;;
>
새로운 transaction을 열어라는 의미입니다.
transaction에 대해서 모른다면 DBMS에 대한 공부를 따로 해 보셔야
할 겁니다. 공부할 만한 충분한 가치가 있습니다. 기존의 윈도그나
MySQL을 사용하시던 분들에겐 생소할 수 있습니다.
간단히 설명하면 새로운 작업을 시작한다는 의미 입니다.
이 작업의 결과는 마지막에 END 나 COMMIT 을 호출하기 전에는
실제로 DB에 반영되지 않습니다. 그리니 그동안의 작업을 DB에
반영할 필요가 없을 경우에는 ROLLBACK 을 시키면 간단히 원래의
상태로 돌아 갑니다.
> declare C cursor for select * from $tablename;
>
> 또 하나 postgres명령어에서 cursor에 대해 잘 모르겠거든요.
> 그냥 포인터의 개념이 아닐까 하는 막연하게 잡혀 있기만 합니다...힘드시
> 겠지만 자세한 설명 부탁드립니다.
> 아니면 아시는 사이트나 책이라도 소개해 주시면.... ^^
> 제가 여기에 들어와서 글을 확인도 하지만 좀 빠른 방법으로 멜로 답을 주
> 셨으면 하는데요..
> 그럼 편지나 글 올라오기를 기다리겠습니다.. 고맙습니다.
cursor 라고 하는 것은 개념 상으로는 하나의 작업의 결과에
대한 포인트라고 생각하시면 됩니다. 여기서 몇개를 읽어 들여라,
현재 포인트의 뒷쪽 몇개를 읽어 들여라 이런식의 질의가 가능
한 것입니다. 예전에 select 에서 limit 구문이 없던 시절
특정 갯수의 row를 fetch 하는데 많이 이용하던 기법입니다.
cursor는 실행되는 순간 새로운 transaction이 열린다는 것을
명심하세요.
|