我三流

いろいろ自分なりにやってみたことを書いています

postgreSQL

Postgresql 氏名フィールドに半角全角の混じった空白スペースを挟む場合の「氏」「名」分割方法

こんなテーブルがあり name | namef ----------+-------------- 田中 一郎 |タナカ イチロウ ----------+-------------- 鈴木 幸子 |スズキ サチコ こんなSQLで select split_part(replace(name, ' ',' '),' ',1) first_name, split_part(replace(name, ' ',' '),' ',2) …

C# PostgreSQL 部分一致検索するってのをやってみました。

C#のFormにCrystalReportsViewerとテキストボックスとコマンドボタンを設置して phoneticカラムをLikeで部分一致検索するってのをやってみました。.rptとかはできているという前提で...省略...最初は、SelectCommandのSQL文字列にLike '%:phonetic%' …

PostgreSQLでストリーミング・レプリケーションの構築

2台のサーバーはFreeBSD 9.0-RELEASE + PostgreSQL 9.1.3 【マスターサーバー】 = 192.168.0.30【スレーブサーバー】 = 192.168.0.50とりあえず、マスタサーバーのディスク故障に備えたリアルタイム・バックアップの用途 【マスターサーバー】 マスターサー…

Npgsql ExecuteScalarメソッドを使用してみました

入力値をチェックする方法にもいろいろな方法があると思いますが 今回は、データグリッドビューに値を入力する際にマスタテーブルに 登録されたIDを参照して、マスタにIDがあればエラーメッセージを表示し 入力をキャンセル、無ければ登録するという仕組みの…

同時実行違反にドハマりする

Formにデータグリッドビュー配置して PostgreSQL DBのデータを表示・追加・更新・削除を行う アプリケーションを作成する過程での更新処理で 「同時実行違反:UpdateCommand によって、処理予定の 1 レコードのうち 0 件が処理されました。」今日は、この「…

文字列関数 CONCAT() を使ってみる

SQL中で文字列を連結する際に 現在は'||'を使って SELECT (first_name || ' ' || last_name) full_name FROM user;のように使っているのですがもし、'first_name' か 'last_name'のどちらかがNULLだと 連結すると結果はがNULLになってしまうということで (SE…

SQLで'すべて'も表示したい場合

性別マスタテーブル[gender] テーブル gender id | gender ----------- 1 | 男 2 | 女 ↓こうしたい場合 id | gender ----------- 0 | すべて 1 | 男 2 | 女 UNIONクエリを使うとOK select g_id, gender from gender union select 0 as g_id, 'すべて' as gen…

PostgreSQL 動的カラム ストアドファンクション

このところストアドファンクションで動的カラムに対応すべく格闘中。 n_idは、グループの管理id s_idは、グループ毎のid sectorは、区間名 下記、トリガーはsectorが1件入力される毎に s_idに自動採番するトリガー関数。 CREATE TABLE sector ( id serial NO…

PostgreSQL トリガで自動採番

C#のDefaultValuesNeededで自動採番している部分を PostgreSQLのトリガに置き換えてみました。 ロジックはDBで出来ることはDBにまかせたほうが 効率的ということは思っていたのですが 今日までこのトリガと向き合うことを避けてました。下記、手続き型関数(…

マラソン競技用C#アプリケーション

マラソン競技集計用アプリケーションを作成しています。 といっても、小規模(300人前後)で手集計ですが...システム要件は・複数のPCから複数ポイントのタイムを入力する。 ・各々ポイントから、紙ベースで記録されたものをPCに入力する。 ・集計の記録…

PostgreSQL グループ毎 自動採番

新規入力時、サロゲートキー以外のグループ毎に採番したい場合元ネタ:pgsql-jp ML[TABLE:users] u_id serial(サロゲートキー) id integer(重複あり) s_id integer(重複あり) n_id integer(重複あり) [トリガでmax()を使うケース] CREATE FUNCTION a…

DataGridViewで複数レコード更新

DataGridViewでINSERTする場合 1レコードのINSERTならできるのですが 複数レコードになると 「データの保存に失敗しました。」 [内容] 「There is already an open DataReader associated with this Command which must be closed first.」 というエラーで…

FreeBSD postgresql 9.0 インストール

今日は、VC#開発環境のバックエンドサーバーである FreeBSD8.1サーバーのPostgreSQLのバージョンを8.4から9.0にしました。とりあえず、常時稼動していないので # portsnap fetch # portsnap extract # portsnap updateしておく。いままで、稼動していたpostg…