È possibile eseguire in Postgres 9.5 quando il conflitto si verifica su una delle 2 colonne in una tabella.? Fondamentalmente ho 2 colonne e se una delle due colonne genera una violazione del vincolo univoco, allora vorrei eseguire l'operazione di aggiornamento.Come posticipare in Postgres in conflitto su una delle 2 colonne?
risposta
Sì, e questo comportamento è predefinito. Qualsiasi violazione del vincolo univoco costituisce un conflitto e quindi lo UPDATE
viene eseguito se è specificato ON CONFLICT DO UPDATE
. L'istruzione INSERT
può avere solo una singola clausola ON CONFLICT
, ma la clausola conflict_target
può specificare più nomi di colonna ciascuno dei quali deve avere un indice, ad esempio un vincolo UNIQUE
. Si è, tuttavia, limitato a un singolo conflict_action
e non si disporrà di informazioni su quale vincolo ha causato il conflitto durante l'elaborazione di tale azione. Se hai bisogno di quel tipo di informazioni, o di un'azione specifica a seconda della violazione del vincolo, dovresti scrivere una funzione di trigger, ma poi perdi l'atomicità fondamentale dell'istruzione INSERT ... ON CONFLICT DO ...
.
- 1. Cancella conoscenza postgres delle colonne rilasciate
- 2. Postgres - aggregare due colonne in un elemento
- 3. Codifica colonne postgres database
- 4. Unisciti alla tabella postgres su due colonne?
- 5. Cambiare i nomi delle colonne delle tabelle in maiuscolo in postgres
- 6. Come dividere un tipo in più colonne in Postgres?
- 7. Riferendosi alle colonne dinamiche in una query postgres?
- 8. Come unire 2 colonne su 1 colonna
- 9. È possibile ottenere una cronologia delle query eseguite in postgres
- 10. Come aggiornare 2 colonne in 2 tabelle che hanno una chiave esterna
- 11. Come fare correttamente upsert in postgres 9.5
- 12. tavolo Bootstrap - diviso una delle colonne della riga in due
- 13. Come ordinare le righe in base a una delle colonne?
- 14. Come selezionare un sottoinsieme di una matrice in Postgres?
- 15. Interrogazione su schemi in Postgres
- 16. disaggregare tavolo su 2 colonne in T-SQL
- 17. Inserimento di massa, aggiornamento in caso di conflitto (invio cumulativo) su Postgres
- 18. Rilevamento delle modifiche alle colonne in un trigger di aggiornamento postgres
- 19. Allineamento a 2 colonne in una vista testo
- 20. Adattamento delle colonne in QTableView
- 21. Partizionamento delle tabelle dinamiche in postgres
- 22. Postgres Unique Constraint su due colonne: Integer e Boolean
- 23. SQLAlchemy: conteggio delle distinte su più colonne
- 24. Definire una chiave primaria unica basata su 2 colonne
- 25. Interpretazione "omesso di conflitto" in Maven 2 dipendenza albero
- 26. Come "nome" di una query in postgres
- 27. Blocco delle colonne in EPPlus (una funzione di divisione Excel)
- 28. Come eseguire il backup delle funzioni solo in Postgres
- 29. in base ai nomi delle colonne
- 30. Come combinare 2 colonne bit
Non sono sicuro che sia corretto al 100%, ma la domanda è vaga. Se le 2 colonne hanno vincoli univoci diversi (cosa ho capito dalla domanda), allora il CONFLITTO ON può essere usato solo per NON FARE NULLA. Non riesci a concatenare o "disgiungere" il cosiddetto conflict_target. – Jeff
@Jeff Espansione della mia risposta. – Patrick
Grazie per il tuo aggiornamento. Risponde alla mia domanda su cosa sia o meno in grado di gestire due diverse violazioni con lo stesso INSERT. – Jeff