Pular para o conteúdo

Fóruns Banco de dados Oracle Renomear Tabela no Oracle 10g Renomear Tabela no Oracle 10g

#100925
rman
Participante

    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.