MySQL5.1

DBの作成
mysqladmin create DB名

DBのログイン
mysql -u ユーザ名 -D DB名 -h ホスト名

DB一覧:mysqlshow

DBの切り替え
use DB名

テーブル一覧
show tables;

テーブル詳細
desc テーブル名

パスワード付きユーザ指定でDBログイン
mysql -u ユーザ名 -pパスワード データベース名
※-pとパスワードはスペースを入れないこと!

DB作成
mysqladmin -u ユーザ名 -pパスワード create データベース名
※-pとパスワードの間はスペースを入れない。

■注意点
・timestamp型
→テーブルに対して1フィールドのみ有効(定義はできるが自動で値を更新してくれるのは最初のフィールドのみ)。



システムのカスタマイズなどを行う場合にまずそのシステムがどのように動いているのか調査する必要がある。


でもDB回りの調査時にアクションに対応するテーブルを調べるのにソースを全て追うのは厳しい。


そこで前テーブルにトリガーを作成して変更があったテーブルをログテーブルに書き出すようにしてみた。

※今回はPostgreSQLの例です。


まずログテーブルを作成する。


CREATE TABLE all_log (
table_name text NOT NULL,
dodate timestamp without time zone,
action text NOT NULL);

上記はテーブル名、日時、アクション(update等)だけを記録するテーブル。


次にトリガー関数を作成。

CREATE OR REPLACE FUNCTION public.test()
RETURNS "trigger" AS '
begin
insert into all_log(table_name,action,dodate) values (tg_relname,tg_op,now());
return new;
end;
'
language 'plpgsql' VOLATILE;


関数を登録したら全テーブルにトリガーを作成。

CREATE TRIGGER tri_log
before INSERT OR UPDATE OR DELETE
ON テーブル名
FOR EACH STATEMENT
EXECUTE PROCEDURE public.test();


これで対象システムのアクションを実行すれば変更があったテーブルの調査が可能。


調査後にログテーブル、トリガー、トリガー関数を削除するの忘れないように!



'「参照設定」で [Microsoft VBScript Regular Expressions X.X] を参照


'正規表現チェック関数
'引数:正規表現パターン、大文字小文字を区別(する場合はtrue、しない場合はfalse)
Function f_RegExp(sPattern As String, sIgnoreCase As Boolean, sValue As String) As Boolean
Dim objRegExp As RegExp

Set objRegExp = New RegExp

With objRegExp
.Pattern = sPattern
.Global = True '文字列全体を検索
.IgnoreCase = sIgnoreCase

f_RegExp = .Test(Trim(sValue))
End With

Set objRegExp = Nothing

End Function