21 lines
885 B
PL/PgSQL
21 lines
885 B
PL/PgSQL
CREATE OR REPLACE FUNCTION public.telesrv_guard_collectible_revision() RETURNS trigger
|
|
LANGUAGE plpgsql AS $$
|
|
BEGIN
|
|
IF OLD.status = 'published' THEN
|
|
IF TG_OP = 'DELETE' THEN
|
|
RAISE EXCEPTION 'published collectible revision is immutable';
|
|
END IF;
|
|
IF NEW.gift_id <> OLD.gift_id OR NEW.revision <> OLD.revision OR
|
|
NEW.upgrade_stars <> OLD.upgrade_stars OR NEW.supply_total <> OLD.supply_total OR
|
|
NEW.slug_prefix <> OLD.slug_prefix OR NEW.status <> OLD.status OR
|
|
NEW.created_by <> OLD.created_by OR NEW.command_id <> OLD.command_id OR
|
|
NEW.created_at <> OLD.created_at OR NEW.published_at <> OLD.published_at THEN
|
|
RAISE EXCEPTION 'published collectible revision is immutable';
|
|
END IF;
|
|
END IF;
|
|
IF TG_OP = 'DELETE' THEN
|
|
RETURN OLD;
|
|
END IF;
|
|
RETURN NEW;
|
|
END;
|
|
$$;
|