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.

Valores únicos en dos columnas no relacionadas por fila.

En PostgreSQL, necesito asegurarme de que cada valor en dos columnas sea único, por ejemplo, las columnas ip_1 e ip_2 son columnas y cada dirección IP en ambas columnas de cualquier fila debe ser única (o NULL). ¿Cómo puedo lograr esto?

Como pregunta adicional, si alguien sabe cómo lograr esto en Mikro-ORM (dentro de Nest.js + TypeScript), sería increíble, sin embargo, esto no es tan importante (ahora).

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que cada valor en dos columnas sea único en PostgreSQL, puede crear una restricción única en ambas columnas juntas. Así es como se hace:

    ALTER TABLE table_name ADD CONSTRAINT unique_ips UNIQUE (ip_1, ip_2);
    

    Esto asegurará que ninguna dos filas en “table_name” tengan la misma combinación de valores “ip_1” e “ip_2”, y también permitirá valores “NULL”.

    En cuanto a Mikro-ORM, puede usar el decorador @Unique para lograr la misma restricción. Aquí hay un ejemplo:

    import { Entity, PrimaryKey, Property, Unique } from 'mikro-orm';
    
    @Entity()
    export class IPAddress {
      @PrimaryKey()
      id!: number;
    
      @Property()
      ip_1!: string;
    
      @Property()
      ip_2!: string;
    
      @Unique()
      unique_ips!: [string, string];
    }
    

    Esto creará una restricción única en la combinación de las columnas ip_1 e ip_2, y también usará la propiedad unique_ips como ayuda para facilitar la aplicación de esta restricción en su código.

Comments are closed.