› Fóruns › Banco de dados Oracle › Renomear Tabela no Oracle 10g › Renomear Tabela no Oracle 10g
Você pensou em criar uma nova tabela com o nome desejado, copiar as linhas para a nova tabela, criar as CONSTRAINTS, depois remover a tabela antiga ? Não precisa nada disso.
Pulo do gato:
ALTER TABLE RENAME TO ;
Ou pulo do gato ninja:
RENAME TO ;
Segue um exemplo prático:
CREATE TABLE PAI (
PAI_ID NUMBER,
NOME VARCHAR(32)
);
ALTER TABLE PAI ADD CONSTRAINT PK_PAI PRIMARY_KEY(PAI_ID);
CREATE TABLE FILHO (
FILHO_ID NUMBER,
PAI_ID NUMBER,
NOME VARCHAR(32)
);
ALTER TABLE FILHO ADD CONSTRAINT PK_FILHO PRIMARY_KEY(FILHO_ID);
ALTER TABLE FILHO ADD CONSTRAINT FK_PAI_FILHO FOREIGN KEY(PAI_ID) REFERENCES PAI(PAI_ID);
INSERT INTO PAI (PAI_ID, NOME) VALUES (1, 'JOAO');
INSERT INTO PAI (PAI_ID, NOME) VALUES (2, 'PEDRO');
INSERT INTO PAI (PAI_ID, NOME) VALUES (3, 'AUGUSTO');
INSERT INTO PAI (PAI_ID, NOME) VALUES (4, 'JONAS');
INSERT INTO PAI (PAI_ID, NOME) VALUES (5, 'MANUEL');
COMMIT;
INTO FILHO(FILHO_ID, PAI_ID, NOME) VALUES(1, 1, 'LUCAS');
INSERT INTO FILHO (FILHO_ID, PAI_ID, NOME) VALUES (2, 1, 'MARIANA');
INSERT INTO FILHO (FILHO_ID, PAI_ID, NOME) VALUES (3, 2, 'JOANA');
INSERT INTO FILHO (FILHO_ID, PAI_ID, NOME) VALUES (4, 2, 'MARCOS');
INSERT INTO FILHO (FILHO_ID, PAI_ID, NOME) VALUES (5, 4, 'ANTONIO');
COMMIT;
ALTER TABLE PAI RENAME TO FATHER;
RENAME FILHO TO SON;
DROP TABLE SON;
DROP TABLE FATHER;
O melhor de tudo, nem precisa se preocupar com as CONSTRAINTS.