ALTER TABLE pessoa_clientes ADD COLUMN codigo VARCHAR(30);
ALTER TABLE pessoa_fornecedores ADD COLUMN codigo VARCHAR(30);
ALTER TABLE pessoa_colaboradores ADD COLUMN codigo VARCHAR(30);
ALTER TABLE pessoa_vendedores ADD COLUMN codigo VARCHAR(30);
WITH seq AS (SELECT id,ROW_NUMBER() OVER(PARTITION BY empresa_id ORDER BY id)::TEXT codigo FROM pessoa_clientes) UPDATE pessoa_clientes item SET codigo=seq.codigo FROM seq WHERE seq.id=item.id;
WITH seq AS (SELECT id,ROW_NUMBER() OVER(PARTITION BY empresa_id ORDER BY id)::TEXT codigo FROM pessoa_fornecedores) UPDATE pessoa_fornecedores item SET codigo=seq.codigo FROM seq WHERE seq.id=item.id;
WITH seq AS (SELECT id,ROW_NUMBER() OVER(PARTITION BY empresa_id ORDER BY id)::TEXT codigo FROM pessoa_colaboradores) UPDATE pessoa_colaboradores item SET codigo=seq.codigo FROM seq WHERE seq.id=item.id;
WITH seq AS (SELECT id,ROW_NUMBER() OVER(PARTITION BY empresa_id ORDER BY id)::TEXT codigo FROM pessoa_vendedores) UPDATE pessoa_vendedores item SET codigo=seq.codigo FROM seq WHERE seq.id=item.id;
ALTER TABLE pessoa_clientes ALTER COLUMN codigo SET NOT NULL;
ALTER TABLE pessoa_fornecedores ALTER COLUMN codigo SET NOT NULL;
ALTER TABLE pessoa_colaboradores ALTER COLUMN codigo SET NOT NULL;
ALTER TABLE pessoa_vendedores ALTER COLUMN codigo SET NOT NULL;
CREATE UNIQUE INDEX uk_pessoa_clientes_empresa_codigo ON pessoa_clientes(empresa_id,codigo);
CREATE UNIQUE INDEX uk_pessoa_fornecedores_empresa_codigo ON pessoa_fornecedores(empresa_id,codigo);
CREATE UNIQUE INDEX uk_pessoa_colaboradores_empresa_codigo ON pessoa_colaboradores(empresa_id,codigo);
CREATE UNIQUE INDEX uk_pessoa_vendedores_empresa_codigo ON pessoa_vendedores(empresa_id,codigo);
