Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Allow developers to extend/create their own the OnConflict clause

Ouverte
#730 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
fsharp, postgresql
Domaine
databases

Piste de recherche

Commencez dans src/SQLProvider.Runtime/Providers.Postgresql.fs vers la ligne 516 et examinez la discriminated union OnConflict ainsi que sa génération SQL. Comparez la manière dont les autres providers gèrent le comportement en cas de conflit avant de décider de la portée de l’extension. C’est terminé lorsque le comportement personnalisé de ON CONFLICT peut gérer les conflits liés à des index uniques qui ne sont pas des clés primaires sans casser Throw, Update ou DoNothing.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

https://github.com/fsprojects/SQLProvider/blob/8afaad203efe2b3b900a2ad1a6d8a35d66ebe40a/src/SQLProvider.Runtime/Providers.Postgresql.fs#L516

Is there any way to create / use a custom "ON CONFLICT" clause? It looks like this should be easily extendible by adding another case to the OnConflict discriminated union:

        match entity.OnConflict with
        | Throw -> ()
        | Update ->
          ~~(sprintf " ON CONFLICT (%s) DO UPDATE SET %s "                
                (String.Join(",", pk |> List.map (sprintf "\"%s\"")))
                (String.Join(",", columnNamesWithValues |> List.map(fun (c,p) -> sprintf "\"%s\" = %s" c p.ParameterName ) )))
        | DoNothing ->
          ~~(sprintf " ON CONFLICT DO NOTHING ")
        | Custom clause -> ~~(sprintf clause)

I have a postgres database with tables that contain unique indices that aren't a primary key (created via Rails migrations). I'd like to be able to watch out for conflicts on these columns and update other columns as necessary.


edit
If you think this would be a desired feature, I'd be happy to submit a pull request. I'd need/want your help for other providers but I could at least kick it off.

Langage dominant
F#
Étoiles
627
Forks
147
Merge moyen
2 h 2 min
PR mergées (30 j)
1

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de fsprojects/SQLProvider

Toutes les issues de fsprojects/SQLProvider

Issues similaires

Plus d'issues Databases

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.