1.49. droptrigger_int( integer, name )

関数特性

言語: PLPGSQL

戻り値: integer

dropTrigger_int (trig_tabid, trig_tgname) 複製されたテーブル trig_tabid 上のトリガー trigger trig_tgname は無効になったかどうかを確認する DROP_TRIGGER 事象を処理する。

declare
	p_trig_tabid		alias for $1;
	p_trig_tgname		alias for $2;
	v_tab_altered		boolean;
begin
	-- ----
	-- 中枢構成にロックの取得
	-- ----
	lock table sl_config_lock;

	-- ----
	-- 現在のテーブルの状態を獲得(変更されていようがいまいが)
	-- ----
	select tab_altered into v_tab_altered
			from sl_table where tab_id = p_trig_tabid;
	if not found then
		-- ----
		-- 見つからないと言うエラーはここでは厳しくありません。
		-- 何故なら、そのセットから購読されていません。
		-- ----
		return 0;
	end if;

	-- ----
	-- 複製のためテーブルが変更されていれば、元の状態をリストア
	-- ----
	if v_tab_altered then
		perform alterTableRestore(p_trig_tabid);
	end if;

	-- ----
	-- sl_trigger からエントリを削除
	-- ----
	delete from sl_trigger
			where trig_tabid = p_trig_tabid
			  and trig_tgname = p_trig_tgname;

	-- ----
	-- もしあったならテーブルを複製された状態に戻す
	-- ----
	if v_tab_altered then
		perform alterTableForReplication(p_trig_tabid);
	end if;

	return p_trig_tabid;
end;