[pgsql-jp: 25574] Re: 特定のレコードに対しての権限付与

ISHIDA Akio iakio @ pjam.jpweb.net
2002年 4月 10日 (水) 20:50:43 JST


こんばんは。石田@苫小牧市です。

On Wed, Apr 10, 2002 at 07:20:01PM +0900, Kazusi Nakamura wrote:
> はじめまして。こんばんは。中村と申します。
> 環境:RedHat Linux7.0
>      PostgreSQL-7.1.3
> 
> なにぶん知識不足で、質問もつたないと思いますが、よろしくご教授
> お願いします。
> 
> テーブル定義を
> create table abc(
> 	id	integer,
> 	name	text);
> として、データを
> 	id  |	name
> ----------------------
> 	 0  |	dummy <---このレコードを削除不可にしたい
> 	 1  |	naka
> 	 2  |	mura
> とした場合に、id=0のレコードだけをDELETEできないように、権限を
> 付与する事は可能でしょうか?

権限を付与するより、RULE とか TRIGGER で実装してみてはどうでしょう?

ishida=> create rule abc_del_protect as on delete to abc
 where old.id = 0 do instead nothing;
CREATE
ishida=> create rule abc_upd_protect as on update to abc
 where old.id = 0 do instead nothing;
CREATE
ishida=> select * from abc;
id name
-- ----
 1 naka
 2 mura
 0 hoge
(3 行)

ishida=> update abc set name = 'fuga' where id = 0 ;
UPDATE 0
ishida=> update abc set id = 10 where id = 0 ;
UPDATE 0
ishida=> delete from abc where id = 0 ;
DELETE 0
ishida=> select * from abc;
id name
-- ----
 1 naka
 2 mura
 0 hoge
(3 行)


# 初めて RULE 使ってみたので微妙に自信ありませんが。

-- 
ISHIDA Akio




pgsql-jp メーリングリストの案内