68 lines
2.1 KiB
PL/PgSQL
68 lines
2.1 KiB
PL/PgSQL
|
|
CREATE OR REPLACE FUNCTION tcg.public.FN_before_insert_TCG_MTG_Rarity()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.created_on = CURRENT_TIMESTAMP;
|
|
NEW.updated_last_on = CURRENT_TIMESTAMP;
|
|
|
|
IF NEW.change_set_id IS NULL THEN
|
|
RAISE EXCEPTION 'Change Set ID must be provided.';
|
|
END IF;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql
|
|
;
|
|
|
|
CREATE OR REPLACE FUNCTION tcg.public.FN_before_update_TCG_MTG_Rarity()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_last_on = CURRENT_TIMESTAMP;
|
|
|
|
IF OLD.change_set_id IS NOT DISTINCT FROM NEW.change_set_id THEN
|
|
RAISE EXCEPTION 'New Change Set ID must be provided.';
|
|
END IF;
|
|
|
|
INSERT INTO tcg.public.TCG_MTG_Rarity_Audit (
|
|
rarity_id
|
|
, name_field
|
|
, value_prev
|
|
, value_new
|
|
, change_set_id
|
|
)
|
|
-- Changed name
|
|
SELECT NEW.rarity_id, 'name', OLD.name, NEW.name, NEW.change_set_id
|
|
WHERE OLD.name IS NOT DISTINCT FROM NEW.name
|
|
UNION
|
|
-- Changed colour_name
|
|
SELECT NEW.rarity_id, 'colour_name', OLD.colour_name, NEW.colour_name, NEW.change_set_id
|
|
WHERE OLD.colour_name IS NOT DISTINCT FROM NEW.colour_name
|
|
UNION
|
|
-- Changed price_ratio_min
|
|
SELECT NEW.rarity_id, 'price_ratio_min', CAST(OLD.price_ratio_min AS VARCHAR), CAST(NEW.price_ratio_min AS VARCHAR), NEW.change_set_id
|
|
WHERE OLD.price_ratio_min IS NOT DISTINCT FROM NEW.price_ratio_min
|
|
UNION
|
|
-- Changed price_ratio_max
|
|
SELECT NEW.rarity_id, 'price_ratio_max', CAST(OLD.price_ratio_max AS VARCHAR), CAST(NEW.price_ratio_max AS VARCHAR), NEW.change_set_id
|
|
WHERE OLD.price_ratio_max IS NOT DISTINCT FROM NEW.price_ratio_max
|
|
UNION
|
|
-- Changed active
|
|
SELECT NEW.rarity_id, 'active', OLD.active::TEXT, NEW.active::TEXT, NEW.change_set_id
|
|
WHERE OLD.active IS NOT DISTINCT FROM NEW.active
|
|
;
|
|
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql
|
|
;
|
|
|
|
CREATE TRIGGER TRI_before_insert_TCG_MTG_Rarity
|
|
BEFORE INSERT ON tcg.public.TCG_MTG_Rarity
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION tcg.public.FN_before_insert_TCG_MTG_Rarity()
|
|
;
|
|
CREATE TRIGGER TRI_before_update_TCG_MTG_Rarity
|
|
BEFORE UPDATE ON tcg.public.TCG_MTG_Rarity
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION tcg.public.FN_before_update_TCG_MTG_Rarity()
|
|
; |