sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan upsert i Postgres om konflikt på en af ​​2 kolonner?

Ja, og denne adfærd er standard. Enhver overtrædelse af entydige begrænsninger udgør en konflikt og derefter UPDATE udføres, hvis ON CONFLICT DO UPDATE er angivet. INSERT sætning kan kun have en enkelt ON CONFLICT klausulen, men conflict_target af denne klausul kan angive flere kolonnenavne, som hver skal have et indeks, såsom en UNIQUE begrænsning. Du er dog begrænset til en enkelt conflict_action og du vil ikke have information om, hvilken begrænsning der forårsagede konflikten, når du behandler denne handling. Hvis du har brug for den slags information eller specifik handling afhængigt af begrænsningsovertrædelsen, bør du skrive en triggerfunktion, men så mister du den altafgørende atomicitet i INSERT ... ON CONFLICT DO ... erklæring.



  1. Konverter dato i formatet MM/DD/ÅÅÅÅ til MySQL-dato

  2. Oracle.Dataaccess er i GAC. Kan jeg styre den version, jeg bruger?

  3. Dynamisk indstilling af __tabelnavn__ til sharding i SQLAlchemy?

  4. Laravel 8 - Kunne ikke finde driveren:Illuminate\Database\QueryException kunne ikke finde driveren (SQL:vælg * fra `listen`)