-- Отдельная таблица записей об остатках (создаётся при каждом выполнении и переносе) CREATE TABLE shopping_volume_records ( id SERIAL PRIMARY KEY, item_id INTEGER NOT NULL REFERENCES shopping_items(id) ON DELETE CASCADE, user_id INTEGER NOT NULL REFERENCES users(id), action_type VARCHAR(20) NOT NULL, volume_remaining NUMERIC(10,4), volume_purchased NUMERIC(10,4), daily_consumption NUMERIC(10,4), created_at TIMESTAMP NOT NULL DEFAULT NOW() ); CREATE INDEX idx_shopping_volume_records_item_id ON shopping_volume_records(item_id); -- Создаём начальные записи для всех существующих товаров (остаток 0, дата = created_at) INSERT INTO shopping_volume_records (item_id, user_id, action_type, volume_remaining, volume_purchased, created_at) SELECT id, user_id, 'create', 0, 0, created_at FROM shopping_items WHERE deleted = FALSE;