関数特性
言語: PLPGSQL
戻り値: integer
setDropSequence_int (seq_id) SET_DROP_SEQUENCE 事象を処理します。シーケンス seq_id を所有しているセットを購読する遠隔ノードは、複製セットからシーケンスを削除します。declare p_seq_id alias for $1; v_set_id int4; v_local_node_id int4; v_set_origin int4; v_sub_provider int4; v_relkind char; v_sync_row record; begin -- ---- -- 中枢構成にロックを取得 -- ---- lock table sl_config_lock; -- ---- -- このシーケンスのセット識別子を決定 -- ---- select seq_set into v_set_id from sl_sequence where seq_id = p_seq_id; -- ---- -- シーケンスの存在の確証 -- ---- if not found then return 0; end if; -- ---- -- 遠隔オリジンのセットに対して、そのセットに私たちが購読されて -- いるかの検査。さもなければ、私たちのデータベースには全く -- 存在しないであろうからそのシーケンスを無視します。 -- ---- v_local_node_id := getLocalNodeId('_schemadoc'); select set_origin into v_set_origin from sl_set where set_id = v_set_id; if not found then raise exception 'Slony-I: setDropSequence_int(): set % not found', v_set_id; end if; if v_set_origin != v_local_node_id then select sub_provider into v_sub_provider from sl_subscribe where sub_set = v_set_id and sub_receiver = getLocalNodeId('_schemadoc'); if not found then return 0; end if; end if; -- ---- -- sl_sequence、sl_seqlog からシーケンスを削除 -- ---- delete from sl_seqlog where seql_seqid = p_seq_id; delete from sl_sequence where seq_id = p_seq_id; return p_seq_id; end;