• 締切済み

[PostgreSQL]別DBのテーブルのSelect、Insert

お世話になっております PostgreSQL8.1を使用しまして あるテーブルにInsertがかかると その内容を判断し別のテーブルに insertをする仕組みが必要になり いろいろ試してみて TriggerとFunctionを使用すれば 実装できるとこまでわかりました。 ただしその別テーブルが別DBに配置されているので そのテーブルに以下のようなInsert文を発行しても エラーになってしまいます。 Insert into SUB_DB.TEST_TBL values('test','date'・・・・); (SUB_DB:ストアドを実行しているのとは別のDB) ストアドから別テーブルを参照更新する手段を ご存知のかたご教授いただけますでしょうか。 よろしくお願いいたします。

  • bay1
  • お礼率0% (0/1)

みんなの回答

回答No.1

PostgreSQLにそんなに詳しい訳ではないですが、マニュアルに以下のような記述がありますけど? =====マニュアル引用(ここから)===== 5.7. スキーマ PostgreSQLデータベースクラスタには、複数の名前付きデータベースが含まれます。ユーザおよびユーザのグループはクラスタ全体で共有されますが、他のデータは複数のデータベース間で共有されません。サーバに接続しているクライアントは、単一のデータベース、つまり接続要求で指定したデータベース内のデータにしかアクセスできません。 =====マニュアル引用(ここまで)=====

参考URL:
http://www.postgresql.jp/document/pg814doc/html/ddl-schemas.html

関連するQ&A

  • 別テーブルからselectした値を他のテーブルにinsertしたいのですが、上手くできません

    以下のように行ったのですが、 全ての値が別テーブルにinsertされません。 $sql = "SELECT tbl_A.id, tbl_A.data FROM tbl_A "; $rst = mysql_query( $sql ); while ( $col = mysql_fetch_array( $rst ) ) { $sql = "INSERT INTO tbl_B (          date, id, data ) VALUES ( '" . date( 'Y-m-d' ) . "', '" . mysql_real_escape_string( $col['id'] ) . "', '" . mysql_real_escape_string( $col['data'] ) . "' )"; } このやり方では、テーブル内の1つの値しかinsertされません。 selectされた全ての値をinsertするにはどのようにしたら良いのでしょうか? よろしくお願いします。 DB:mysql5 SP:php5

    • ベストアンサー
    • MySQL
  • PostgreSqlについて

    おはようございます。 質問させてください。 テーブルのカラムにtimestamp型のフィールドがあるとします。 テーブルinsertの時に現在の時間をいれたいのですが、どのような値を入れればいいのでしょうか? test_tbl-------------- ID:INTEGER DATE:TIMESTAMP ---------------------- insert into test_tbl (ID, DATE) values (1, ****); ****の部分にnow, dateとかそんな関数はあるのでしょうか?

  • INSERT文の書式

    oracleに触るの初めてなのにストアドなんて書くことに・・ 助けを頂けたらと思います。 ストアドの中でですが・・・・ INSERT文の中ではテーブルの項目が2つ以上あるとき、 変数にその2つ以上分の値を文字列として入れておいて 、その値をINSERT文に流すことってできないのでしょう か? test_str := (' ''テスト1'' , ''テスト2'' '); insert into TestTable (test1 , test2 ) values (test_str); 上記のように書くと PL/SQL: ORA-00947: 値の個数が不足しています。 とのエラーが帰ってきます。 上記のように変数を使って下記のように解釈させたいのですが無理なのでしょうか? insert into TestTable (test1 , test2 ) values ('テスト1','テスト2'); それではお願いします。 失礼いたします。

  • PHPでInsertを実行したら空白のレコードが追加される

    PostgreSQL 8.0.1 PHP 4 Apache 1.3 で環境を構築しています。 PHPで、 $sql=sprintf("insert into records values('20','test2','cal')"); と入力し実行すると、きれいにDBに登録できるのですが、 $sql=sprintf("insert into records values('%s','%s','%s')",$no,$name,$address); と入力したら、DBには空白で登録されてしまいます。 何がおかしいのか検討が付かなくて困っております 宜しくお願い致します。

  • PostgreSQL 7.2.8 異なるデータベース間のテーブル

    こんにちは。かなり困っています、よろしくお願いします>< PostgreSQL 7.2.8 を使用しています。 一つのユーザーで、二つのデータベースがあります。 それぞれ同じカラムを持つ同じ名前のテーブルがあります。 中のデータは違います。 db1 - tableT db2 - tableT 条件を付けて、db1のtableTのデータを db2のtableTへコピーするにはどのような方法がありますか? 例えば select * from db1.tableT tbl1, db2.tableT tbl2 where tbl1.title = tbl2.title; のようにしてとりあえずselectで試してみましたがダメでした。 やはりスキーマとデータベースは違うんですね>< ドットが認識されませんでした。 どなたか解決法をご存知の方、よろしくお願いします。

  • smalldatetime型へのInsert

    ストアド内でsmalldatetime型の項目にGetDate()関数を使用してInsertしよとしているのですが、 なぜか「STRING または BINARY データは切り詰められました。」というエラーになってしまいます。 ストアドを使用しないで直接Insert文を流すと正常に登録できます。 ちなみにInsert文はごく単純で INSERT INTO テーブル名(項目名1(varchar),項目名2(varchar),項目名3(smalldatetime)) VALUES(@変数1,@変数2,GetDate()) という感じです。 どなたか分かる方いましたら助言お願いします。

  • INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい

    挿入するフィールドの内1つだけを他のテーブルから取ってきた値を使いたいのですが、 insert into table1 (field1, field2, field3) values('a', (select field2 from table2 where field4='xxx'), 'b'); Oracleだと↑の書き方でいけるのですが、PostgreSQL(6.5.3)だとエラーになってしまいます。 2回もDBにアクセスしにいくのはいやなので、1文で書きたいです。上記以外で他の書き方をご存知でしたら教えてください。よろしくお願いします。

  • CLOB型へのINSERT

    いつも参考にさせて頂いています。 まず、問題はCLOB型に4000Byte以上のデータを 格納出来なくて困っております。 環境は下記のとおりです。 OS:Windows2003 Oracleバージョン:9.0.1.4.0 テストした手順は (1)テーブル作成 create table TEST_TBL ( id number(9), data clob ); (2)INSERT insert into TEST_TBL values(1,'4000Byte以上のデータ'); ORA-01704: 文字列リテラルが長すぎます CLOBは4Gまで入るはずなのになぜなんでしょうか? ご回答よろしくお願いいたします。

  • DB2 INSERT時の格納順序

    DB2 UDBで以下のようなINSERT文を発行した場合、 insert into TABLE_A values(行1), (行2), (行3); テーブルへの格納順序が、 行1 行2 行3 のようにならないこともありますか? AIXにDBサーバーがある、 Webアプリケーションからの、 INSERT文です。 ちなみに、 クラスター索引などは 使われていません。 ご教示お願いします。

  • ACCESS SQLのINSERTについて

    TBLというテーブルにINSERT文を使用して1行レコードを追加したいです。TBLテーブルのカラムAにはシステム日付を、カラムBには別テーブルのselect count(*)の実行結果を挿入したいのですがうまくいきません。何か良い方法はございませんでしょうか? INSERT INTO カウンタ統計 ( [DATE], USER_COUNT ) VALUES (date(), (SELECT COUNT(*) FROM hiplus_HW_USER)); ※日付は問題なく挿入できるのですがSELECT文の結果が挿入できない状況です。宜しくお願いします.