Si usted
ALTER TABLE old_table_name
RENAME TO new_table_name;
todas las restricciones existentes (clave externa y de las limitaciones) y disparadores hará referencia al objeto recién cambiado de nombre. Las secuencias no tienen relación con las tablas, por lo que no habrá impacto en las secuencias (aunque si quiere decir que está haciendo referencia a la secuencia en un desencadenante de la tabla, el desencadenador seguirá haciendo referencia a la misma secuencia después del cambio de nombre). Sin embargo, será necesario actualizar todos los procedimientos almacenados que haya escrito que hagan referencia al nombre de la tabla anterior para hacer referencia al nuevo nombre de la tabla.
Ahora, aunque las restricciones y disparadores continuarán funcionando correctamente, conservarán sus nombres originales. Si tiene convenciones de nomenclatura para estos objetos que desea mantener después del nombre de la tabla, deberá hacer más. Por ejemplo, si quieres un nivel de fila antes de desencadenador de inserción en la tabla FOO
a ser nombrado TRG_BI_FOO
y cambiar el nombre de la tabla a BAR
, que había necesidad de alterar el gatillo de forma explícita a cambiar su nombre
ALTER TRIGGER trg_bi_foo
RENAME TO trg_bi_bar;
Del mismo modo, que había necesidad de cambiar el nombre de sus limitaciones e índices
ALTER TABLE bar
RENAME CONSTRAINT pk_foo TO pk_bar;
Gracias Adam. @Justin sugirió que los disparadores continuarán funcionando correctamente. ¿Estás diciendo que necesitaré corregir manualmente los disparadores? Por ejemplo, si tuviera un disparador de autoincrement (CREATE TRIGGER trg_bi_foo ANTES DE INSERTAR foo PARA CADA FILA INICIE SELECCIONAR seq_foo.NEXTVAL IN: NEW.foo_id FROM DUAL; END;) se actualizará automáticamente "ANTES DE INSERTAR EN foo" a "ANTES INSERTAR en la barra "? –
Sí.Pero si tiene algún otro disparador en alguna otra tabla que realiza una consulta en contra de 'foo', ese disparador no se actualizará automáticamente para consultar contra' bar'. –