以下の内容はhttp://sonic64.com//2003-06-03.htmlより取得しました。


Landscape トップページ | < 前の日 2003-06-02 2003-06-03 次の日 2003-06-04 >

Landscape - エンジニアのメモ 2003-06-03

* 配色とデザインが秀逸な ximian のサイト

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [メモ]

背景は白、本文や見出しはブルーが基調。読みやすく、一覧性が高い。
http://www.ximian.com/

* トリガによるデータのハンドリング

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [SQL] [MS SQL Server]

- トリガを使うことで、INSERT/UPDATE 文を複数のテーブルにそのまま反映させることができる。


- 「ユーザが入力した内容の履歴を取りたい」というリクエストを受けた。本番のテーブルへ投げられたクエリと同じクエリを別途用意したログ用のテーブルに追記していく、というやり方で実現できるだろう。

また、マネージャからは、「プログラム側で複数のテーブルに SQL を投げるのはやらせたくない。欠落したりするおそれがある。何か仕組みを作れないか考えてみてくれ。」とも言われている。

- 解決策

ワーク用テーブルとマスターテーブルとログ用テーブルを用意する。
ログ用テーブルのテーブル定義は、マスターテーブルと基本的に同じだが、
ユニーク制約、参照整合性制約などは指定しないようにする。
本番用テーブルに以下のような INSERT/UPDATE トリガをセットする。
OLD 特殊テーブルを参照し、その内容をログ用テーブルに INSERT する。

MS SQL Server では、OLD テーブルは inserted と呼ばれている。
postgres などとは名前が違うだけで、機能は変わらないようだ。
ただ、Postgres はトリガの発動タイミングを指定できるが、
MS SQL Server 2000 では指定できない。トリガが発動するのは、制約チェックなどの後だけだ。
・・・と思ったら、MS SQL Server 2000 にも事前に発動するトリガがあるそうな。
INSTEAD OF トリガというもので、従来の事後発動トリガは AFTER トリガと呼ぶとのこと。

- サンプル

-- log テーブルへは無条件に INSERT する。
-- master テーブルへは、commit_master カラムが1の時のみ DELETE & INSERT する。
INSERT INTO user_master SELECT * FROM inserted では、inserted が複数レコードでもすべて INSERT してくれる。
DROP TRIGGER log_transaction_user;
CREATE TRIGGER log_transaction_user ON user FOR INSERT, UPDATE AS
BEGIN
  INSERT INTO user_log SELECT * FROM inserted
  IF (SELECT COUNT(*) FROM inserted WHERE commit_master = 1) > 0 BEGIN
    DECLARE @user_cd VARCHAR(5)
    SELECT @user_cd = user_cd FROM inserted
    DELETE FROM user_master WHERE user_cd = @user_cd
    INSERT INTO user_master SELECT * FROM inserted
  END
END

* /etc/cron.hourly にあるスクリプトが実行されたときに、

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [Linux]

メールを送信させない
[analog-jp:01351] Re: root 宛てのメールの停止方法
http://jp.analog.cx/ml/archive/200209.month/1351.html
ここではなく、各cron.daily等のディレクトリ中に入っている
各実行ファイル内につけます。例えば、/etc/cron.daily/中に
あるslocate.cronは、以下のような使い方をしています。



以上の内容はhttp://sonic64.com//2003-06-03.htmlより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14