38 lines
1.5 KiB
SQL
38 lines
1.5 KiB
SQL
-- =====================================================
|
|
-- ALTERAÇÃO DA TABELA DESPESAS PARA CAMPOS LIVRES
|
|
-- =====================================================
|
|
|
|
-- Adicionar novos campos de texto livre
|
|
ALTER TABLE despesas ADD COLUMN IF NOT EXISTS tipo_nome TEXT;
|
|
ALTER TABLE despesas ADD COLUMN IF NOT EXISTS fornecedor_nome TEXT;
|
|
|
|
-- Migrar dados existentes (se houver)
|
|
UPDATE despesas
|
|
SET tipo_nome = (
|
|
SELECT nome FROM tipos_despesas
|
|
WHERE tipos_despesas.id = despesas.tipo_despesa_id
|
|
)
|
|
WHERE tipo_despesa_id IS NOT NULL AND tipo_nome IS NULL;
|
|
|
|
UPDATE despesas
|
|
SET fornecedor_nome = (
|
|
SELECT razao_social FROM fornecedores
|
|
WHERE fornecedores.id = despesas.fornecedor_id
|
|
)
|
|
WHERE fornecedor_id IS NOT NULL AND fornecedor_nome IS NULL;
|
|
|
|
-- Remover as constraints das chaves estrangeiras (se existirem)
|
|
ALTER TABLE despesas DROP CONSTRAINT IF EXISTS despesas_tipo_despesa_id_fkey;
|
|
ALTER TABLE despesas DROP CONSTRAINT IF EXISTS despesas_fornecedor_id_fkey;
|
|
|
|
-- Tornar os campos antigos opcionais (para compatibilidade)
|
|
ALTER TABLE despesas ALTER COLUMN tipo_despesa_id DROP NOT NULL;
|
|
|
|
-- Criar índice nos novos campos para performance
|
|
CREATE INDEX IF NOT EXISTS idx_despesas_tipo_nome ON despesas(tipo_nome);
|
|
CREATE INDEX IF NOT EXISTS idx_despesas_fornecedor_nome ON despesas(fornecedor_nome);
|
|
|
|
-- Comentários para documentação
|
|
COMMENT ON COLUMN despesas.tipo_nome IS 'Nome do tipo de despesa (campo livre)';
|
|
COMMENT ON COLUMN despesas.fornecedor_nome IS 'Nome do fornecedor (campo livre)';
|