-- Create sequence for transfer laying movement number CREATE SEQUENCE transfer_laying_seq START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 99999 NO CYCLE; -- Set sequence starting value based on existing data (if any) -- This prevents duplicate movement numbers if there's already data DO $$ DECLARE max_existing INTEGER; BEGIN -- Check if table exists and has data IF EXISTS ( SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' AND table_name = 'transfer_to_layings' ) THEN -- Get max ID from existing records SELECT COALESCE(MAX(id), 0) INTO max_existing FROM transfer_to_layings; -- Set sequence to start after the highest existing ID IF max_existing > 0 THEN PERFORM setval ( 'transfer_laying_seq', max_existing ); END IF; END IF; END $$;