es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Limitar la clave primaria compuesta a solo un registro como “no eliminado” (donde varios registros “eliminados” no invocan la restricción)

Quieres utilizar una clave primaria compuesta para limitar solo un registro disponible para prod.

Tabla: usuario_id texto, pozo_id texto, eliminado int, [otros atributos]

Clave primaria propuesta: (usuario_id, pozo_id, eliminado)

La unicidad aquí se relaciona realmente con un registro único que es una combinación única: usuario_id + pozo_id + eliminado = 0

En otras palabras, ¿se podrían tener varios registros donde usuario_id + pozo_id + eliminado = 1 (el valor eliminado es solo una marca eliminada)? En este momento, estoy pensando en definir que la marca eliminada representa “eliminada” cuando es> 0, por lo que podría simplemente incrementarla para todos los registros eliminados. Pero pensé que alguien probablemente tendría una mejor idea.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Basándose en la información proporcionada, parece que la clave primaria propuesta (user_id, well_id, deleted) es adecuada para limitar solo un registro disponible para prod. Esto se debe a que la singularidad de un registro se determina por la combinación de los tres atributos, donde user_id y well_id son identificadores y deleted se utiliza como un marcador de eliminación.

    Como se sugiere, establecer que deleted sea mayor que 0 para todos los registros eliminados es una opción viable. Otra opción podría ser utilizar un valor booleano para deleted, donde verdadero indica que el registro está eliminado y falso indica que no lo está.

    También se pueden utilizar restricciones para evitar que múltiples registros con la misma combinación de user_id y well_id tengan un marcador de deleted de 0. Por ejemplo, se puede agregar una restricción única en la combinación de user_id, well_id y (deleted = 0).

    En general, el uso de una clave primaria compuesta con restricciones adecuadas puede limitar efectivamente solo un registro disponible para prod, según los requisitos dados.

Comments are closed.