Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
¿Cuál es la mejor manera de separar algunas columnas de una tabla existente en una nueva tabla manteniendo la relación?

Digamos que tengo una tabla Pago con las siguientes columnas

 payment_id - UUID amount - Numeric order_id - Unique VARCHAR psp_order_id - Third Party Unique Order Id created by Payment Service Provider psp_payment_id -Third Party Unique Payment Id created by Payment Service Provider created_at - payment created at ended_at - payment ended at

Ahora hay un requisito para integrar una nueva PSP. Pero dado que la tabla de pagos está estrechamente ligada a una PSP, me gustaría mover psp_order_id, psp_payment_id a otra tabla, por ejemplo: razorpay_payment_details.

Entonces el esquema resultante podría ser:

Tabla de pagos

 payment_id - UUID amount - Numeric order_id - Unique VARCHAR created_at - payment created at ended_at - payment ended at

razorpay_pago_detalles

 id - UUID (Primary Key) psp_order_id (Unique String) psp_payment_id (Unique String) payment_id (Foreign Key which relates Payment Entity to razorpay_payment_details entity)

¿Cómo se debe cambiar el esquema y migrar los datos de producción existentes a la nueva tabla?

Tecnologías utilizadas - Spring Boot, PostgreSQL PD: No administro migraciones de bases de datos usando Flyway/Liquibase.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Por lo general, crearía la nueva tabla ( razorpay_payment_details ) y luego copiaría las filas/columnas relevantes de la tabla original ( payment ) con una consulta de insert ... select .

 insert into razorpay_payment_details(psp_order_id, psp_payment_id, payment_id) select psp_order_id, psp_payment_id, payment_id from payment;

La columna de id debe ser una columna generada automáticamente (como una columna serial ), por lo que la dejé aparte en la consulta.

A continuación, puede continuar con la validación de los resultados. Finalmente, puede eliminar las columnas de la tabla original.

 alter table payment drop column psp_order_id, drop column psp_payment_id;
over 4 years ago · Santiago Trujillo Denunciar

0

Tus pasos con la consulta serán así:

Cree su tabla razorpay_payment_details primero:

 create table razorpay_payment_details( id uuid DEFAULT uuid_generate_v4 (), psp_order_id varchar(100), psp_payment_id varchar(100), payment_id uuid, primary key(id), constraint fk_paymentid foreign key(payment_id) references payment(payment_id) )

Migre sus datos de la tabla de payment a la nueva tabla razorpay_payment_details utilizando la siguiente consulta:

 insert into razorpay_payment_details (psp_order_id, psp_payment_id, payment_id) select psp_order_id, psp_payment_id, payment_id from payment

Después de completar la migración y la verificación de los datos, puede ejecutar la siguiente consulta para modificar la tabla de payment :

 alter table payment drop column psp_order_id , drop column psp_payment_id;

No olvides hacer una copia de seguridad antes de esta actividad.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda