INSERT com SELECT e NextVal
Prezados, boa noite;
Preciso fazer um INSERT em uma nova tabela usando o SELECT. Estou usando o PostgreSQL
Criei a tabela nova:
CREATE TABLE tabCid (
codNiv SERIAL, --Chave da Tabela
codSeq INTEGER, -- Sequencial interno
codTip INTEGER NOT NULL, -- Tipo de registro
visOrd INTEGER NOT NULL, -- Ordem para exibir no HTML
codRel INTEGER, -- Relacionamento entre outras tabelas
tipNiv VARCHAR(150) NOT NULL, -- Nome da Cidade
nomRes VARCHAR(60), -- Nome Reduzido da Cidade
codPend INTEGER NOT NULL, -- Pendente ou não
carHor INTEGER, -- Código do Pais
numCre INTEGER, -- Null
nomObs VARCHAR(150), -- Null
CONSTRAINT tabCid_pkey PRIMARY KEY(codNiv)
) WITHOUT OIDS;
Agora vou fazer o INSERT nela (tabCid), puxando dados da tabela antiga (Nivel):
Estou fazendo assim:
INSERT INTO tabCid
SELECT codNiv, codSeq, 1, visOrd, codRel, tipNiv, Null, 0, carHor, Null, Null FROM Nivel WHERE codTip = 64 ORDER BY codRel;
Mas assim tem um problema, ele vai gravar o Sequencial da tabela antiga (Nivel) na tabela nova (tabCid). Então vai iniciar em 12.026
Eu gostaria que o Incrementador iniciasse do 1 e fosse aumentando. 1, 2, 3, 4 ...
Tentei dar um NextVal no Incrementador da tabela nova (tabCid) na hora de fazer o INSERT assim:
INSERT INTO tabCid
SELECT (SELECT NextVal('tabcid_codniv_seq')), codSeq, 1, visOrd, codRel, tipNiv, Null, 0, carHor, Null, Null FROM Nivel WHERE codTip = 64 ORDER BY codRel;
Mas não deu certo.
Como eu faço pra alimentar uma tabela nova com dados de uma tabela antiga, mas não trazer o incrementador da tabela antiga. Usando o Insert com Select.
Espero que eu tenha sido claro.
Agradecido.
Discussão (4)
Carregando comentários...