add visual order to product_paint table (#445)
* add visual order to product_paint table * rename
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
ALTER TABLE product_paint ADD COLUMN visual_order NUMERIC DEFAULT NULL;
|
||||
|
||||
-- Contraint of visual_order per product_id
|
||||
ALTER TABLE product_paint ADD CONSTRAINT visual_order_per_productid UNIQUE (product_id, visual_order);
|
||||
|
||||
-- Create function that will automatically assign a sequential visual_order to new rows if the visual_order is not provided
|
||||
-- in the insert.
|
||||
CREATE OR REPLACE FUNCTION enforce_sequential_visual_order()
|
||||
RETURNS TRIGGER AS $$
|
||||
DECLARE
|
||||
max_visual_order INT;
|
||||
BEGIN
|
||||
-- Get the current max value of visual_order for the given product_id
|
||||
SELECT COALESCE(MAX(visual_order), -1) INTO max_visual_order
|
||||
FROM product_paint
|
||||
WHERE product_id = NEW.product_id;
|
||||
|
||||
-- Set visual_order to the next sequential number
|
||||
NEW.visual_order := max_visual_order + 1;
|
||||
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Activate the trigger
|
||||
CREATE TRIGGER enforce_sequential_visual_order
|
||||
BEFORE INSERT ON product_paint
|
||||
FOR EACH ROW
|
||||
WHEN (NEW.visual_order IS NULL) -- Only auto-assign if visual_order is not provided
|
||||
EXECUTE FUNCTION enforce_sequential_visual_order();
|
||||
Reference in New Issue
Block a user