前提
Postgresqlで作業用のデータベースTESTに
本番テーブルを外部テーブルで読み取り専用で設定し
TESTのテーブルはUPDATE,INSERT,DELETE
可能にしたいと思います。
発生している問題・エラーメッセージ
外部テーブルは設定できたのですが
UPDATE DELETEが出来てしまいます。
外部テーブルのみReadOnlyの設定が出来ません。
また、それはTESTから使用するときに
ReadOnlyということであって、
本番環境では通常通り更新できないといけません。
外部テーブルのみTESTから操作するときに
ReadOnlyにする設定方法を知りたいです
該当のソースコード
TESTデータベースで次のことを行い
Honban_Tableは外部テーブルとして設定できました。
-- 1. 拡張機能のインストール。初回のみ
CREATE EXTENSION IF NOT EXISTS postgres_fdw;
-- 2. 接続先の外部サーバオブジェクトを作成。ここではユーザとパスワードは設定しない
CREATE SERVER remote_server
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'localhost', port '5432', dbname 'Honban');
-- 3. 外部サーバにアクセスするユーザとパスワードを指定
CREATE USER MAPPING
FOR postgres SERVER remote_server
OPTIONS (USER 'postgres', PASSWORD 'password');
-- 4. 外部テーブル定義の設定
IMPORT FOREIGN SCHEMA public
LIMIT TO ("Honban_Table") -- 対象のテーブルだけインポート
FROM SERVER remote_server INTO public;
試したこと
https://zx.jpn.org/b/20150125/401/postgresql/postgresql-read-only-mode
を参考にしました
インスタンスの場合→どうやるのかわかりません
postgresql.confの default_transaction_read_only をoffにしてpg_ctl でreloadする。
DB指定の場合→本番データベースが更新できなくなったら困るので試せません
alter database データベース名 set default_transaction_read_only = on;
ユーザ指定の場合→データベースTEST全体でReadOnlyになりました
alter user ユーザ名 set default_transaction_read_only = on;
補足情報(FW/ツールのバージョンなど)
PostgreSQL14

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/10/12 05:57
2022/10/12 09:26
2022/10/14 07:02
2022/10/14 09:27