Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

Consider a prices table with these columns: id integer primary key product_id integer -- foreign key start_date date not null end_date date not null quantity integer price numeric I'd like the database to enforce the rule that a product can only have one price at a specific quantity in a date range (via where <date> BETWEEN start_date AND end_date). Is this kind of range-based constraint doable?
【9.5新機能チェック】BRINインデックス, Part 1: BRINインデックスとは何か、その仕組みを探る 既に試してみている方もおられるかと思いますが、7月2日にPostgreSQL 9.5 alpha1 がリリースされました。 PostgreSQL: PostgreSQL 9.5 Alpha 1 Released PostgreSQL 9.5 Alpha 1登場 | マイナビニュース PostgreSQL 9.5にはいろいろと新しい機能が追加されていますが、その中に「BRINインデックス」という機能があります。 最近、人と話すと「BRINってどうなのよ?」と話題になることが増えており、また直近では情報系システムのプロジェクトに参加することが多く、個人的にいろいろと期待している機能の一つだったりします。 というわけで、今回から3回連続で、この「BRINインデックス」について、その仕組
Ivan Voras <ivoras(at)fer(dot)hr> writes: > This is PostgreSQL 8.1.0. > - what does "Bitmap Heap Scan" phase do? A plain indexscan fetches one tuple-pointer at a time from the index, and immediately visits that tuple in the table. A bitmap scan fetches all the tuple-pointers from the index in one go, sorts them using an in-memory "bitmap" data structure, and then visits the table tuples in physica
どうも、Benoîtです。 TECHSCORE Advent Calendar 2014 の 4 日目の投稿です。 PostgreSQLではいろいろなインデックス種類が存在する。使い方も様々である。インデックス種類の概要のあとに一番使われるB-treeインデックスの使い道や保守の話しを深めていく。 インデックスとは特定の項目を素早く参照できるようにするためのもの。B-treeインデックスに関してはソートに使うこともできる。 インデックスの種類 PostgreSQLはいろいろなインデックスに対応している。 B-treeインデックス、CREATE INDEX を利用するとデフォルトで選択されるインデックスである。Bの字はバランスの意味で、イメージとしてはtree(木構造)のroot(根)からleaf(最下層のノード)までの階層数がなるべく揃うようにバランスを取る。B-treeインデックスはどの
Have you ever needed to write a query that combined data from two PostgreSQL databases? Our client Healthify has. Since Healthify work with healthcare and store some patient information, they’re very careful not to send any personally identifiable information to third party services. One such service is Segment, which Healthify use to track user activity on the site. Conveniently, Segment can send
概要CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ name ] ON table_name [ USING method ] ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ) [ WITH ( storage_parameter = value [, ... ] ) ] [ TABLESPACE tablespace_name ] [ WHERE predicate ] 説明CREATE INDEXは、指定したリレーションの指定した列(複数可)に対するインデックスを作ります。 リレーションとしてテーブルまたはマテリアライズドビューを取ることができます。 インデッ
The SQL standard defines four levels of transaction isolation. The most strict is Serializable, which is defined by the standard in a paragraph which says that any concurrent execution of a set of Serializable transactions is guaranteed to produce the same effect as running them one at a time in some order. The other three levels are defined in terms of phenomena, resulting from interaction betwee
8.17. 範囲型範囲型は、ある要素型(その範囲の派生元型と呼ばれます)の値の範囲を表わすデータ型です。 例えば、timestampの範囲は、会議室が予約されている時間の範囲を表すのに使うことができるでしょう。 この場合、データ型はtsrange("timestamp range"の短縮)で、timestampが派生元型となります。 派生元型には完全な順序がなければなりません。これは、要素の値が範囲の前、中間、後のどこにあるのか明確に定義されている必要があるからです。 範囲型は、一つの範囲内の多くの要素の値を表現できる、また、範囲の重なりなどの概念が明確に表現できる、などの理由で便利です。 スケジューリングのために時刻と日付の範囲を使うのがもっとも簡単な例ですが、価格の範囲、機器による測定値の範囲などといったものにも利用できるでしょう。 8.17.1. 組み込みの範囲型PostgreSQL
小ネタです。 Amazon Redshiftクラスタ環境上に於いて、スキーマを分けて運用管理をする事は往々にしてある事と思われますが、その際に同じテーブル名でスキーマを分けて作成する、という事も状況に拠ってはやる手段であるかと思います。運用面からの必要性であったり、又は開発環境として利用するために...という感じです。 その際、それら作成したテーブルに対してSQLアクセスを行う際の『スキーマ指定』について挙動が異なるんだけどこれは一体...という声が挙がっておりましたので、調べてみました。『検索パス(search_path)』という要素が関連していたのですが、その辺りの解説を簡単な実例を踏まえてご紹介してみたいと思います。 『検索パス』の設定値によってテーブルアクセスの順序を制御 そのものズバリな回答が以下公式ページに掲載されていますね。要はそう言う事らしいです。 search_path
説明NOTIFYコマンドは、現在のデータベース内で事前にその指定チャネル名についてLISTEN channelコマンドを実行したクライアントアプリケーションに省略可能な"ペイロード"を持つ通知イベントを送ります。 通知はすべてのユーザから可視です。 NOTIFYは同一のPostgreSQLデータベースにアクセスするプロセスの集合に対する単純なプロセス間通信の仕組みを提供します。 通知の際にペイロード文字列を送信することができます。 また、データベース内のテーブルを使用して通知者から(1つまたは複数の)リスナに追加的なデータを渡すことにより、構造化されたデータを渡す高度な仕組みを構築することができます。 通知イベントとしてクライアントに渡される情報には、通知チャネル名と通知を行うセッションのサーバプロセスのPID、ペイロード文字列(指定されていなければ空文字列)が含まれます。 与えられたデー
しばらくPostgreSQL 9.5調査をサボっていたのですが、久々に再開。 9.5の目玉機能になりそうなものとして、所謂UPSERTがある。 UPSERTの概要 UPSERTとは、非常に簡単に言えば、 「INSERTできるならINSERTし、INSERTできない場合は代わりにUPDATEを行う」 という機能。 本家のアナウンスーンのページでは INSERT ON CONFLICT UPDATE, otherwise known as "UPSERT" と書かれている。 この記述からもわかるように、UPSERT専用の構文が追加されたというわけではなく、INSERT文へ構文を追加してUPSERT相当を実現するというもの。 PostgreSQL文書のINSERTのページを見てのとおり、9.5からは ON CONFLICT [ conflict_target ] conflict_action
postgresqlにはスキーマと呼ばれるものがあります。(オラクルDBにもあるようです。) [DB] ― [スキーマ] ― [テーブル] ― [カラム] ― [レコード] (※すべて「1対多」の関係)スキーマはDBとテーブルのあいだに存在する形になります。 「hoge_db」データベースに「public」スキーマと「hoge」スキーマが存在する場合の構成例 hoge_db(DB) ・public(スキーマ) ※1 ・user_table(テーブル) ※2 ・info_table(テーブル) ※2 ・hoge(スキーマ) ※1 ・user_table(テーブル) ※3 ・attention_table(テーブル) (※1)1つのDBに対して複数のスキーマを持たせる事ができます。 (※2)1つのスキーマに対して複数のテーブルを持たせる事ができます。 (※3)スキーマ内に作成するテーブルは、
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く