Ich möchte UPDATE-Befehl über eine Gruppe von Datensätzen ausführen, aber es schlägt fehl, da einige Datensätze nach der Aktualisierung eine Tabelleneinschränkung verletzen würde. Ist es möglich, nur passende Aufzeichnungen irgendwie zu aktualisieren?Teil UPDATE-Befehl
Antwort
Verhalten von Update als alles oder nichts ist von Entwurf
Sie hinzufügen können Wo Klauseln zu Ihrem Update-Befehl alle Einschränkungen zu überprüfen, aber dies führt zu Code-Duplizierung, nicht eine gute Sache
Wie wäre es tun das Update Zeile für Zeile mit einer Cursor- oder CLR-Schleife?
Wenn dieser Teil einer mehrschichtigen Anwendung ist, dann ist dies, wenn Ihre Business-Objekte über Ihre SQL-Constraints über Meta-Daten oder Schema Abfrage wissen müssen, so dass die Datenüberprüfung durchgeführt werden kann, bevor es auf die Datenbank trifft
Die CSLA framework hat einige Leckereien für diese
Die Update-Anweisung ist selbst atomar, es wird entweder alles gelingen oder alle fehlschlagen. Sie müssen die SQL ändern, um nur die Zeilen zu aktualisieren, bei denen die Einschränkung nicht verletzt wird.
Sie müssen die Einschränkungen zur WHERE-Klausel hinzufügen.
Entweder das oder führen Sie das Update separat für jede Zeile, aber das scheint nicht eine gute Idee überhaupt.
Um zu einigen der bereits geposteten Antworten hinzuzufügen: Möglicherweise müssen Sie eine Unterabfrage in der WHERE-Klausel verwenden. Wie (im Pseudo-Code)
update mytable
set myfield = myval
where not exists (select from some table that would tell you if a constraint is violated for this row)
Wenn Sie Code eingeben, kann ich Ihnen vielleicht mehr helfen.
- 1. Teil Typinferenz
- 2. Teil `<` und `Teil <` in einer NSData
- 3. Set Teil der Zeichenfolge gleich einem Teil des Arrays
- 4. Rails: Render-Sammlung Teil: Erste Größe Sammlung innerhalb Teil
- 5. Teil Spezialisierung einer Vorlage
- 6. String Teil Vergleich
- 7. Teil Verzeichnisliste in Linux
- 8. Wegnehmen Teil eines Objekts
- 9. Update Teil des Modells
- 10. wählen Sie Zeit Teil
- 11. erhalten Millisekunde Teil Zeit
- 12. Teil Equirectangular Panorama Three.js
- 13. einen Teil Job
- 14. Restore Teil einer Datenbank
- 15. R Teil data.frame Replikation
- 16. mehrere Teil-Kennung nicht
- 17. epplus Teil existiert bereits
- 18. Teil Generics in Java
- 19. Javascript Vererbungsidee (Teil 2)
- 20. CakePHP Ansichten Teil
- 21. Render-Vorlage mit Teil
- 22. Unterstrich Teil von innerHTML
- 23. AddUriPathExtensionMapping Teil von XmlFormatters?
- 24. Rails Teil mit variabler
- 25. angezeigte Teil JSON Datei
- 26. Mysql Teil-Match-Suchalgorithmus
- 27. Elasticsearch Teil Phrase passende
- 28. Clojure Teil rechts
- 29. eine variable Passing Teil
- 30. Doing einen Teil Pull