![]()
|
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7">
LXXXIPostgreSQL 関数導入PostgreSQLデータベースã¯ã‚ªãƒ¼ãƒ—ンソースã®ãƒ—ãƒãƒ€ã‚¯ãƒ„ã§ã‚りã€ç„¡æ–™ã§ 使用å¯èƒ½ã§ãã¾ã™ã€‚Postgresã¯å…ƒã€…UCB(カリフォルニア大å¦ãƒãƒ¼ã‚¯ãƒ¬ã‚¤æ ¡) コンピュータ・サイエンスå¦éƒ¨ã§é–‹ç™ºã•れãŸã‚‚ã®ã§ã™ã€‚ã“ã®Postgresã¯ã€ ç¾åœ¨ã€ã„ãã¤ã‹ã®å•†ç”¨ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«ãŠã„ã¦ã‚µãƒãƒ¼ãƒˆã•れã¤ã¤ã‚るオブジェク トリレーショナルデータベース的概念ã®å¤šãã®å…ˆé§†ã‘ã§ã—ãŸã€‚ Postgresã¯ã€SQL92/SQL3言語サãƒãƒ¼ãƒˆã€ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã‚¤ãƒ³ãƒ†ã‚°ãƒªãƒ†ã‚£ã€ æ‹¡å¼µå¯èƒ½ãªåž‹ã‚’æä¾›ã—ã¦ã„ã¾ã™ã€‚PostgreSQLã¯ã€Postgresã®ã‚ªãƒªã‚¸ãƒŠãƒ«ã® ãƒãƒ¼ã‚¯ãƒ¬ã‚¤ãƒ»ã‚³ãƒ¼ãƒ‰ã®ã‚ªãƒ¼ãƒ—ンソースã®åå«ã«ã‚ãŸã‚Šã¾ã™ã€‚ è¦ä»¶PostgreSQLサãƒãƒ¼ãƒˆã‚’使用ã™ã‚‹ã«ã¯ã€PostgreSQL 6.5以é™ãŒå¿…è¦ã§ã™ã€‚ PostgreSQL 7.0以é™ã§ã¯PostgreSQLモジュールã®å…¨ã¦ã®æ©Ÿèƒ½ã‚’使用å¯èƒ½ ã§ã™ã€‚PostgreSQLã¯ã€ãƒžãƒ«ãƒãƒã‚¤ãƒˆæ–‡å—エンコーディングをå«ã‚€å¤šãã® æ–‡å—エンコーディングをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚ç¾åœ¨ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³åŠã³ PostgreSQLã«é–¢ã™ã‚‹ã‚ˆã‚Šè©³ç´°ãªæƒ…å ±ã¯ã€www.postgresqlL.orgã§å…¥æ‰‹å¯èƒ½ã§ã™ã€‚ ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ‰‹é †PostgreSQLサãƒãƒ¼ãƒˆã‚’利用å¯èƒ½ã¨ã™ã‚‹ã«ã¯ã€PHPコンパイル時㫠--with-pgsql[=DIR] を指定ã™ã‚‹ã“ã¨ãŒå¿…è¦ã§ã™ã€‚ 共有オブジェクトモジュールãŒåˆ©ç”¨å¯èƒ½ãªå ´åˆã€php.ini ã® extension ディレクティブ ã¾ãŸã¯ dl() 関数ã«ã‚ˆã‚ŠPostgreSQLモジュール ã‚’ãƒãƒ¼ãƒ‰ã™ã‚‹ã“ã¨ãŒå¯èƒ½ã§ã™ã€‚ 実行用ã®è¨å®šã‚µãƒãƒ¼ãƒˆã•れるini命令ã¯ã€é…布ソースã«ä»˜å±žã™ã‚‹ php.ini-distファイルã«è¨˜è¿°ã•れã¦ã„ã¾ã™ã€‚ 使用法ãŠã‚ˆã³ãƒ’ント
å…¨ã¦ã®é–¢æ•°ãŒå…¨ã¦ã®æ§‹ç¯‰ç’°å¢ƒã§ã‚µãƒãƒ¼ãƒˆã•れるã‚ã‘ã§ã¯ã‚りã¾ã›ã‚“。サãƒãƒ¼ トã•れる関数ã¯ã€ä½¿ç”¨ã™ã‚‹libpq(PostgreSQLã®Cクライアントインターフェ イス)ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¨libpqã®ã‚³ãƒ³ãƒ‘イル方法ã«ä¾å˜ã—ã¾ã™ã€‚足りãªã„関数 ãŒã‚ã‚‹å ´åˆã€libpqã¯ãã®é–¢æ•°ã‚’å¿…è¦ã¨ã™ã‚‹æ©Ÿèƒ½ã‚’サãƒãƒ¼ãƒˆã—ã¾ã›ã‚“。 接続ã™ã‚‹PostgreSQLサーãƒãƒ¼ã‚ˆã‚Šã‚‚æ–°ã—ã„libpqを使用ã™ã‚‹ã“ã¨ã‚‚é‡è¦ã§ ã™ã€‚使用ã™ã‚‹libpqã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒPostgreSQLサーãƒãŒæœŸå¾…ã™ã‚‹ã‚ˆã‚Šã‚‚å¤ ã„å ´åˆã€å•題を生ã˜ã‚‹å¯èƒ½æ€§ãŒã‚りã¾ã™ã€‚ ãƒãƒ¼ã‚¸ãƒ§ãƒ³6.3(1998/3/2)以é™ã€PostgreSQLã¯UNIXドメインソケットを 使用ã—ã¦ã„ã¾ã™ã€‚ã“ã‚Œã‚‰ã®æ–°ã—ã„コãƒã‚¯ã‚·ãƒ§ãƒ³ã®ä½¿ç”¨ä¾‹ã‚’以下ã«ç¤ºã™è¡¨ã« 示ã—ã¾ã™ã€‚ã“ã®ã‚½ã‚±ãƒƒãƒˆã¯/tmp/.s.PGSQL.5432ã«ã‚りã¾ã™ã€‚ ã“ã®ã‚ªãƒ—ションã¯postmasterã«å¯¾ã—ã¦'-i'フラグを 指定ã™ã‚‹ã“ã¨ã§æœ‰åйã¨ãªã‚Šã¾ã™ã€‚ã“れ㯠"Unixドメインソケット以外ã®TCP/IP ソケットもlisten ã™ã‚‹"ã¨ã„ã†æ„味ã§ã™ã€‚ 表 2postmasterã¨PHP
PostgreSQL サーãƒã¸ã®æŽ¥ç¶šã¯ã€ä»¥ä¸‹ã®ã‚ˆã†ã«ã‚³ãƒžãƒ³ãƒ‰æ–‡å—列ã®ä¸ã« 値ã®çµ„を羅列ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ç¢ºç«‹ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ $conn = pg_Connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword"); 以å‰ã®æ§‹æ–‡: $conn = pg_connect ("host", "port", "options", "tty", "dbname") ã¯å¤ã„æ§‹æ–‡ã§ã‚ã‚Šã€æŽ¨å¥¨ã•れã¾ã›ã‚“。 環境変数ã¯ã€PostgreSQLサーãƒ/クライアントã®å‹•作ã«å½±éŸ¿ã‚’与ãˆã¾ã™ã€‚ 例ãˆã°ã€PostgreSQLモジュールã¯ã€ãƒ›ã‚¹ãƒˆåãŒæŽ¥ç¶šæ–‡å—列ã§çœç•¥ã•れãŸå ´ åˆã€ç’°å¢ƒå¤‰æ•°PGHOSTを探ã—ã¾ã™ã€‚サãƒãƒ¼ãƒˆã•れる環境変数ã¯ã€ãƒãƒ¼ã‚¸ãƒ§ãƒ³ 毎ã«ç•°ãªã‚Šã¾ã™ã€‚詳細ã¯ã€PostgreSQLプãƒã‚°ãƒ©ãƒžç”¨ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«(libpq - 環境変数)ã‚’å‚照下ã•ã„。 é©åˆ‡ãªãƒ¦ãƒ¼ã‚¶ç”¨ã«ç’°å¢ƒå¤‰æ•°ãŒè¨å®šã•れã¦ã„ã‚‹ã“ã¨ã‚’確èªã—ã¦ä¸‹ã•ã„。 カレントã®ãƒ—ãƒã‚»ã‚¹ã§åˆ©ç”¨å¯èƒ½ãªç’°å¢ƒå¤‰æ•°ã‚’確èªã™ã‚‹ã«ã¯ã€ $_ENV ã¾ãŸã¯ getenv() を使用ã—ã¦ä¸‹ã•ã„。 定義済ã¿ã®å®šæ•°ã“れらã®å®šæ•°ã¯ã€ã“ã®æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã§å®šç¾©ã•れã¦ãŠã‚Šã€ ã“ã®æ‹¡å¼µãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ãŒPHP内部ã«ã‚³ãƒ³ãƒ‘イルã•れã¦ã„ã‚‹ã‹å®Ÿè¡Œæ™‚ã«å‹•çš„ã«ãƒãƒ¼ ドã•れるã‹ã®ã©ã¡ã‚‰ã‹ã®å ´åˆã®ã¿ä½¿ç”¨å¯èƒ½ã§ã™ã€‚
例PostgreSQL 7.1.0ã‹ã‚‰ã€textãƒ‡ãƒ¼ã‚¿åž‹ã®æœ€å¤§ã‚µã‚¤ã‚ºã¯1GBã¨ãªã£ã¦ã„ã¾ã™ã€‚ å¤ã„PostgreSQLã®textデータ型ã¯ãƒ–ãƒãƒƒã‚¯ã‚µã‚¤ã‚º(デフォルトã¯8KBã€æœ€å¤§ 32KBをコンパイル時ã«å®šç¾©å¯èƒ½)ã®åˆ¶é™ã‚’å—ã‘ã¦ã„ã¾ã—ãŸã€‚ ラージオブジェクト(lo)インターフェースを使用ã™ã‚‹ã«ã¯ã€ãã®ã‚¯ã‚¨ãƒªãƒ¼ã‚’ トランザクション・ブãƒãƒƒã‚¯ã®ä¸ã«å…¥ã‚Œã¦ã‚„ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚ トランザクション・ブãƒãƒƒã‚¯ã¯BEGINã§å§‹ã¾ã‚Šã€ ãã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ãŒæœ‰åйãªå ´åˆã¯COMMITã¾ãŸã¯ ENDã§çµ‚ã‚りã¾ã™ã€‚トランザクションãŒå¤±æ•—ã—ãŸå ´åˆã€ ãã®ãƒˆãƒ©ãƒ³ã‚¶ã‚¯ã‚·ãƒ§ãƒ³ã¯ROLLBACKã¾ãŸã¯ ABORTã«ã‚ˆã‚Šé–‰ã˜ã‚‹å¿…è¦ãŒã‚りã¾ã™ã€‚
|