웹프로그램 연구(XII) SQL문을 복수개 실행하는 방법
[목차(도우미)]
지금까지 안되는 줄로만 여기던 것이었는데 Postgresql에서는 SQL문을 서너줄 이어서 실행해도 된다.
php.pg_query에서도 확인해 보았다. 한번의 pg_query( ) 의 인수로 복수개의 실행문을 보내면 된다. 그러나
mysql_query()에서는 복수개의 실행이 안되는데, phpMyAdmin등에서는 복수개의 SQL문을 실행하고 있다.
이는 SQL 파일을 다루기 위하여 라이브러리를 개발한 것이 아닐까 추측해 본다.
pg_query에 관하여
http://php.net/manual/en/function.pg-query.php
또는 ID를 이용해서 무언가 하고자 했다면 곧바로 연동하면 될 것이다.
LAST_INSERT_ID() 의 매뉴얼
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
PostgreSQL 에서 유사한 기능을 쓰려면 CURRVAL()
http://archives.postgresql.org/pgsql-general/2008-08/msg01058.php
한걸음 더 나아가서 SQL 함수를 정의해서 실행하는 것이 간결하게 된다. 설명이 길어지므로 Postgresql의 예를
연결해 둔다.
PostgreSQL Example:
http://www.postgresql.org/docs/8.0/static/plpgsql-control-structures.html
Example 2:
http://stackoverflow.com/questions/4069718/postgres-insert-if-does-not-exist-already
SQL 함수의 정의 문법은 각각 Mysql Postgresql에 따라 약간 다르지만 유사하게 정의해서 사용할 수 있다.
pg_query에 관하여
http://php.net/manual/en/function.pg-query.php
추가한 항목의 ID를 추출하려면
- $sql = "INSERT INTO tableABC (f1) VALUES (123)";
- mysql_query($sql);
- mysql_query("SELECT LAST_INSERT_ID()");
또는 ID를 이용해서 무언가 하고자 했다면 곧바로 연동하면 될 것이다.
- $sql = "INSERT INTO tableABC (f1) VALUES (123)";
- mysql_query($sql);
- $sql ="INSERT INTO tableXYZ (f2, abc_id) VALUES (45,
LAST_INSERT_ID()); ";
- mysql_query($sql);
http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id
PostgreSQL 에서 유사한 기능을 쓰려면 CURRVAL()
http://archives.postgresql.org/pgsql-general/2008-08/msg01058.php
기존의 데이터 ID를 구하거나 없으면 추가하는 경우
예를 들어 insert if not exists 문과 select 문을 동시에 보내서 ID를 추출하는 식이다.- $sql = "INSERT INTO tableABC (f3) SELECT '123'
- WHERE '123' NOT IN (SELECT f3 FROM tableABC);
- SELECT id FROM tableABC WHERE f3 = '123';";
- mysql_query($sql);
PostgreSQL Example:
http://www.postgresql.org/docs/8.0/static/plpgsql-control-structures.html
Example 2:
http://stackoverflow.com/questions/4069718/postgres-insert-if-does-not-exist-already
SQL 함수의 정의 문법은 각각 Mysql Postgresql에 따라 약간 다르지만 유사하게 정의해서 사용할 수 있다.
'연구개발 이야기' 카테고리의 다른 글
웹프로그램 연구(XIV) SQL JOIN으로 명단을 추출하는 방법 (2) | 2012.01.08 |
---|---|
웹프로그램 연구(XIII) 디버그 로그의 순환방법 (0) | 2011.12.29 |
개발자를 위한 드림플러그(DreamPlug)의 특징 (0) | 2011.12.17 |
웹프로그램 연구(XI) Input.checkbox와 리스트 (2) | 2011.12.11 |