Revision 3740effb
Von Tamino Steinert vor 7 Monaten hinzugefügt
sql/Pg-upgrade2/shop_images_dont_skip_positon.sql | ||
---|---|---|
-- @tag: shop_images_dont_skip_position
|
||
-- @description: Keine Lücken in Position bei Shopbilder
|
||
-- @depends: release_3_9_0
|
||
|
||
UPDATE shop_images
|
||
SET position = reordered.new_position
|
||
FROM (
|
||
SELECT id, rank() OVER (PARTITION BY object_id ORDER BY position ASC) AS new_position
|
||
FROM shop_images
|
||
) reordered
|
||
WHERE shop_images.id = reordered.id
|
||
AND shop_images.position IS DISTINCT FROM reordered.new_position;
|
||
|
||
CREATE OR REPLACE FUNCTION shop_images_reorder_position()
|
||
RETURNS TRIGGER
|
||
AS
|
||
$$
|
||
BEGIN
|
||
UPDATE shop_images
|
||
SET position = reordered.new_position
|
||
FROM (
|
||
SELECT id, rank() OVER (PARTITION BY object_id ORDER BY position ASC) AS new_position
|
||
FROM shop_images
|
||
WHERE shop_images.object_id = OLD.object_id
|
||
) reordered
|
||
WHERE shop_images.id = reordered.id
|
||
AND shop_images.position IS DISTINCT FROM reordered.new_position;
|
||
|
||
RETURN OLD;
|
||
END;
|
||
$$
|
||
LANGUAGE plpgsql;
|
||
|
||
CREATE TRIGGER after_delete_shop_images_trigger
|
||
AFTER DELETE ON shop_images
|
||
FOR EACH ROW
|
||
EXECUTE FUNCTION shop_images_reorder_position();
|
Auch abrufbar als: Unified diff
FIX: Keine Lücken in Positionen von Shopbildern