[ホーム] -> [Apache + PHP + PostgreSQL 実験室] |
このソースをダウンロードする。
/*************************************************************************** * * ポータルサイト用 DDL * * ユーザ関数で、PL/pgSQL を使っているため、コマンドラインから、 * > createlang plpgsql データベース名 * の様に実行して PL/pgSQL をデータベースに追加する必要があります。 * ***************************************************************************/ /***************************************************** * 汎用関数の定義 *****************************************************/ -- 修正日/修正者を更新するトリガプロシージャを作成 DROP FUNCTION p_update_editdata(); CREATE FUNCTION p_update_editdata() RETURNS OPAQUE AS ' BEGIN NEW.editdate := current_timestamp; NEW.edituser := current_user; RETURN NEW; END; ' LANGUAGE 'plpgsql'; /***************************************************** * テーブルの作成 *****************************************************/ -- ユーザマスタの作成 DROP TABLE portal_user; CREATE TABLE portal_user ( userid varchar (10) PRIMARY KEY, password varchar (30) NOT NULL, name varchar (30) NOT NULL, email varchar (80), editdate timestamp NOT NULL DEFAULT current_timestamp, edituser name NOT NULL DEFAULT current_user ); -- 修正日/修正者を更新するトリガ CREATE TRIGGER trg_portal_user_edit BEFORE INSERT OR UPDATE ON portal_user FOR EACH ROW EXECUTE PROCEDURE p_update_editdata(); -- USER_BOOKMARKS 用のシーケンスを作成 DROP SEQUENCE seq_user_bookmarks_code; CREATE SEQUENCE seq_user_bookmarks_code INCREMENT 1 START 1 CACHE 1; -- ブックマークテーブルの作成 DROP TABLE user_bookmarks; CREATE TABLE user_bookmarks ( code integer PRIMARY KEY DEFAULT nextval('seq_user_bookmarks_code'), name varchar (100) NOT NULL, url varchar (300), userid varchar (10) REFERENCES portal_user(userid), editdate timestamp NOT NULL DEFAULT current_timestamp, edituser name NOT NULL DEFAULT current_user ); -- 修正日/修正者を更新するトリガ CREATE TRIGGER trg_user_bookmarks_edit BEFORE INSERT OR UPDATE ON user_bookmarks FOR EACH ROW EXECUTE PROCEDURE p_update_editdata(); -- インデックスを作成 CREATE INDEX idx_user_bookmarks_user ON user_bookmarks (name); /***************************************************** * 権限の設定 *****************************************************/ -- 権限の変更 GRANT SELECT, INSERT, UPDATE, DELETE ON portal_user, seq_user_bookmarks_code, user_bookmarks TO www;