Tengo la siguiente tabla:
tickername | tickerbbname | tickertype
------------+---------------+------------
USDZAR | USDZAR Curncy | C
EURCZK | EURCZK Curncy | C
EURPLN | EURPLN Curncy | C
USDBRL | USDBRL Curncy | C
USDTRY | USDTRY Curncy | C
EURHUF | EURHUF Curncy | C
USDRUB | USDRUB Curncy | C
No quiero que haya más de una columna por cada par tickername
/ tickerbbname
par. Ya he creado la tabla y tengo muchos datos en ella (que ya he asegurado que cumple con los criterios únicos). Sin embargo, a medida que se hace más grande, el margen de error se arrastra.
¿Hay alguna manera de agregar una UNIQUE
restricción en este momento?
sql
database
postgresql
indexing
unique-constraint
Thomas Browne
fuente
fuente
Respuestas:
psql
Ayuda en línea:También documentado en los documentos de postgres (un excelente recurso, además de fácil de leer).
fuente
ALTER TABLE tablename ADD UNIQUE (columns);
. (Tenga en cuenta que laCONSTRAINT
palabra clave debe omitirse).Sí tu puedes. Pero si tiene entradas no únicas en su tabla, fallará. Aquí se explica cómo agregar una restricción única en su tabla. Si está utilizando PostgreSQL 9.x, puede seguir las instrucciones a continuación.
fuente
Si tenía una tabla que ya tenía restricciones existentes basadas en digamos: nombre y apellido y quería agregar una restricción única más, tenía que eliminar toda la restricción de la siguiente manera:
Asegúrese de que la nueva restricción que desea agregar es única / no nula (si es Microsoft Sql, puede contener solo un valor nulo) en todos los datos de esa tabla, y luego puede volver a crearla.
fuente
Sí, puede agregar una restricción ÚNICA después del hecho. Sin embargo, si tiene entradas no únicas en su tabla, Postgres se quejará hasta que las corrija.
fuente
select <column> from <table> group by 1 having count(*) > 1;
dará un informe sobre valores duplicados.