Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
basededonnees:postgresql [08/12/2014 16:28] 127.0.0.1 modification externe |
basededonnees:postgresql [30/07/2016 23:20] (Version actuelle) julp [Mapper des valeurs en d'autres lors d'une requête] |
||
---|---|---|---|
Ligne 32: | Ligne 32: | ||
====== Insensibilité à la casse ====== | ====== Insensibilité à la casse ====== | ||
- | A moins d' | + | Déplacé sur [[http://www.julp.fr/ |
- | * en appliquant LOWER de part et d' | + | |
- | * on peut supprimer celui appliqué à la colonne par un index déjà en minuscules :< | + | |
- | CREATE UNIQUE INDEX x_y_unique on x(LOWER(y)); | + | |
- | -- Puis à requêter ainsi : ... WHERE colonne = LOWER(valeur)</ | + | |
- | * utiliser le type //citext// après installation du module supplémentaire éponyme | + | |
- | * autres | + | |
====== Équivalents MySQL de INSERT IGNORE, ON DUPLICATE KEY UPDATE, etc ====== | ====== Équivalents MySQL de INSERT IGNORE, ON DUPLICATE KEY UPDATE, etc ====== | ||
- | * INSERT IGNORE : | + | Déplacé |
- | * Avec une sous-requête (peu commode à cause des casts explicites | + | |
- | SELECT * FROM ( | + | |
- | SELECT ' | + | |
- | ) t WHERE NOT EXISTS(SELECT NULL FROM table WHERE table.col1 = t.col1) | + | |
- | ;</code> | + | |
- | * Avec une règle : <code sql> | + | |
- | WHERE EXISTS (SELECT 1 FROM x WHERE pk = NEW.pk) | + | |
- | DO INSTEAD NOTHING;< | + | |
- | * En PL/pgSQL : <code sql> | + | |
- | INSERT INTO ...; | + | |
- | EXCEPTION WHEN unique_violation THEN | + | |
- | | + | |
- | END;</ | + | |
- | * INSERT ... ON DUPLICATE KEY UPDATE ... : | + | |
- | * Avec une règle : <code sql> | + | |
- | WHERE EXISTS (SELECT 1 FROM x WHERE pk = NEW.pk) | + | |
- | DO INSTEAD UPDATE x SET colonne1 = NEW.colonne1, | + | |
- | * En PL/pgSQL, **une** méthode : <code sql> | + | |
- | INSERT INTO ...; | + | |
- | EXCEPTION WHEN unique_violation THEN | + | |
- | UPDATE ...; | + | |
- | END;</ | + | |
====== Tableaux ====== | ====== Tableaux ====== | ||
Ligne 129: | Ligne 101: | ||
Attention : les indices de tableaux pour PostgreSQL commence à 1 et non 0 ! | Attention : les indices de tableaux pour PostgreSQL commence à 1 et non 0 ! | ||
Pour les autres cas, autre solution, passer par un hstore : | Pour les autres cas, autre solution, passer par un hstore : | ||
- | <code sql> | + | <code sql> |
+ | Ou json : | ||
+ | <code sql> | ||
====== Déclencheurs (triggers) ====== | ====== Déclencheurs (triggers) ====== |