問題タブ [postgresql-9.6]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postgresql - ユーザー ログイン/ログオフ時の Postgres イベント トリガー (セッションの開始と終了)
私はイベント トリガーを使用しており、テーブルの作成などのアクションをログに記録できます。
ユーザーが接続 (セッションの開始) およびユーザーの切断 (セッションの終了) するたびに実行されるイベント トリガーを作成できますか。
PostgreSql 9.6beta4 を実行しています。
postgresql - 関連データの行を取得する最も効率的な方法: サブクエリ、または GROUP BY を使用した個別のクエリ?
最新の 50 件のニュース記事を取得するための非常に単純な PostgreSQL クエリがあります。
ここで、各記事の最新の 10 件のコメントも取得したいと考えています。それらを取得するには 2 つの方法が考えられますが、PostgreSQL のコンテキストでどちらが最適かはわかりません。
オプション1:
元のクエリのコメントに対して直接サブクエリを実行し、結果を配列にキャストします。
明らかに、この場合、アプリケーション ロジックは、配列内のどのインデックスがどの列であるかを認識している必要がありますが、それは問題ありません。
このメソッドで私が目にする 1 つの問題は、クエリ プランナーがそれをどのように実行するかがわからないことです。これは事実上 51 個のクエリに変わるでしょうか?
オプション 2:
元の非常に単純なクエリを使用します。
次に、アプリケーション ロジックを介して、すべてのニュース ID を収集し、それらを別のクエリで使用します。ニュース記事ごとの結果の数を制限するには、ここで row_number() を使用する必要があります。
このアプローチは明らかにより複雑であり、最初に範囲指定されたニュース記事のすべてのコメントを取得してから、行数が 10 を超えるコメントを切り捨てる必要があるかどうかはわかりません。
どのオプションが最適ですか? または、私が見落としたさらに良い解決策はありますか?
文脈上、これは私が自分で開発したニュース アグリゲーター サイトです。現在、いくつかのカテゴリにわたって約 40,000 のニュース記事があり、約 500,000 のコメントがあります。
postgresql - PostgreSQL - DDL ステートメント関数のパラメーター
DDL ステートメントを関数パラメーターとして渡すことは可能ですか?
このようなもの:
最終的なステートメントは次のようになります。
または、それらを文字列として渡してexecute
コマンドを使用する必要がありますか?
postgresql - PostgreSQLの複合型の配列の正しいOIDは何ですか?
PostgreSQL 9.5 では、私が書いた C 関数で、(0) は28642010ARR_ELEMTYPE(PG_GETARG_ARRAYTYPE_P(0))
を返した複合型 (つまり で定義) の配列です。この数値はソース コードに表示されず、文書化されていません。CREATE TYPE
今日、PG 9.6 にアップグレードしたところ、C 関数がエラーをスローしました。elemtype は 16396 として報告されるようになりました。これもソース コードには表示されません。
ウィキとソースの両方で、10 進数と 16 進数の両方の数字を検索しました。
a) OID がソース コードで定義されておらず、b) PG の変更によって番号が変更される方法がわかりません。
ここで何か不足していますか?
postgresql - PostgreSQL: C 関数からシーケンス nextval を取得する
シーケンスの次の値を取得するために、次のように記述しました。それは完全に機能します:
しかし、SPI を介さずに実行できる関数呼び出しは確かにありますか?
postgresql - InsertとUpdateで同じ値を持つPostgreSQL Upsert(競合時)
Insert... On Conflict ステートメントで同じ値を使用する場合、構文を単純化できますか?
この種のステートメントは、アプリケーションの更新ごとに実行されるスクリプトの一部であるため、他にもたくさんあります。
基本的に、同じ値を 2 回指定しない方法を探しています。