Möglicherweise gibt es so etwas in MS SQL oder nicht, aber warum sollten Sie das wollen?
Es gibt bereits eine Möglichkeit, die UPDATE
Auswirkungen einzuschränken (die WHERE
Klausel).
Es gibt bereits einen Mechanismus zum Schutz Ihrer Daten bei Änderungen (Transaktionen).
Wenn wir beide kombinieren, erhalten wir die allgemeine Lösung: "Führen Sie Ihre Aktualisierungen in einer Transaktion mit den entsprechenden WHERE-Klauseln durch, um zu begrenzen, was sie berühren, und stellen Sie sicher, dass die Ergebnisse richtig aussehen, bevor Sie sich verpflichten":
> BEGIN;
> UPDATE mytable SET foostring='NewValue' WHERE id > 16 AND id < 32;
15 Rows Updated
> SELECT * FROM mytable;
[Omitted -- Make sure it looks right]
> COMMIT; --- Or ROLLBACK if the SELECT doesn't look right
Es ist pro Abfrage mit TOP, wenn Sie möchten.
SET ROWCOUNT hat Nebenwirkungen auf Zwischenzählungen, die zu irreführenden Ergebnissen führen, weshalb es langsam veraltet ist. Das erste MSDN-Beispiel zeigt dies
Glücklicherweise verfügt SQL Server als erwachsenes RDBMS über Datenbank-Snapshots und konsistente Online-Backups, die eine Wiederherstellung zu einem bestimmten Zeitpunkt ermöglichen, falls Sie dies nicht tun ...
quelle
Ich glaube nicht - eines der ersten Dinge, die ich gelernt habe, war, zuerst eine SELECT-Anweisung mit den richtigen WHERE-Klauseln zu schreiben, um sicherzustellen, dass sie richtig ist, und dann SELECT in ein UPDATE zu ändern.
quelle
Wenn Sie diese Art von Verhalten nachahmen möchten, können Sie nur die Anzahl der Zeilen mit TSQL begrenzen.
Hier ist ein Beispiel aus den SQL Server-Dokumenten:
Laut http://msdn.microsoft.com/en-us/library/ms188774.aspx :
Daher kann SQL Server 2012 nicht
SET ROWCOUNT
mit der oben genannten DML arbeiten.Wenn Sie Bedenken haben, die unbeabsichtigt destruktiv sein können:
Abgesehen von diesen Dingen liegen alle anderen Funktionen der --safe-Updates von mysql in Ihrer Verantwortung.
quelle
UPDATE TOP (4) Production.ProductInventory ...
seit SQL Server 2005 verwenden ...