J'ai le tableau suivant:
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
Je ne veux pas qu'il y ait plus d'une colonne pour une tickername
/ tickerbbname
paire donnée . J'ai déjà créé le tableau et contient beaucoup de données (dont je me suis déjà assuré qu'il répond aux critères uniques). À mesure qu'il s'agrandit, cependant, il y a de la place pour l'erreur.
Existe-t-il un moyen d'ajouter une UNIQUE
contrainte à ce stade?
sql
database
postgresql
indexing
unique-constraint
Thomas Browne
la source
la source
Réponses:
psql
l'aide en ligne de:Également documenté dans la documentation postgres (une excellente ressource, et aussi facile à lire).
la source
ALTER TABLE tablename ADD UNIQUE (columns);
. (Notez que leCONSTRAINT
mot - clé doit être omis.)Oui, vous pouvez. Mais si vous avez des entrées non uniques sur votre table, cela échouera. Voici comment ajouter une contrainte unique sur votre table. Si vous utilisez PostgreSQL 9.x, vous pouvez suivre les instructions ci-dessous.
la source
Si vous aviez une table qui avait déjà une contrainte existante basée sur disons: nom et nom et que vous vouliez ajouter une autre contrainte unique, vous deviez supprimer la contrainte entière de:
Assurez-vous que la nouvelle contrainte que vous vouliez ajouter est unique / non nulle (si son Microsoft SQL, elle ne peut contenir qu'une seule valeur nulle) sur toutes les données de cette table, puis vous pouvez la recréer.
la source
Oui, vous pouvez ajouter une contrainte UNIQUE après coup. Cependant, si vous avez des entrées non uniques dans votre table, Postgres s'en plaindra jusqu'à ce que vous les corrigiez.
la source
select <column> from <table> group by 1 having count(*) > 1;
donnera un rapport sur les valeurs dupliquées.