init
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT 1 FROM pg_language WHERE lanname = 'plpgsql') THEN
|
||||
CREATE LANGUAGE plpgsql;
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
CREATE OR REPLACE FUNCTION trg_block_delivered_sales_orders_head()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
IF OLD.status = 'delivered' THEN
|
||||
RAISE EXCEPTION '已交付的销售订单禁止修改或删除';
|
||||
END IF;
|
||||
|
||||
IF TG_OP = 'DELETE' THEN
|
||||
RETURN OLD;
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$;
|
||||
|
||||
DROP TRIGGER IF EXISTS block_delivered_sales_orders_head ON sales_orders;
|
||||
CREATE TRIGGER block_delivered_sales_orders_head
|
||||
BEFORE UPDATE OR DELETE ON sales_orders
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION trg_block_delivered_sales_orders_head();
|
||||
|
||||
CREATE OR REPLACE FUNCTION trg_block_delivered_sales_orders_items()
|
||||
RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
DECLARE
|
||||
v_status text;
|
||||
BEGIN
|
||||
SELECT status INTO v_status
|
||||
FROM sales_orders
|
||||
WHERE id = COALESCE(NEW.order_id, OLD.order_id);
|
||||
|
||||
IF v_status = 'delivered' THEN
|
||||
RAISE EXCEPTION '已交付的销售订单明细禁止变更';
|
||||
END IF;
|
||||
|
||||
IF TG_OP = 'DELETE' THEN
|
||||
RETURN OLD;
|
||||
END IF;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$;
|
||||
|
||||
DROP TRIGGER IF EXISTS block_delivered_sales_orders_items ON sales_order_items;
|
||||
CREATE TRIGGER block_delivered_sales_orders_items
|
||||
BEFORE INSERT OR UPDATE OR DELETE ON sales_order_items
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION trg_block_delivered_sales_orders_items();
|
||||
Reference in New Issue
Block a user