2017-06-15 3 views
0

Ich ändere meine Datenbank (MySQL zu SQL Server) und jetzt habe ich Problem in Update-Abfrage. Wenn ich in MySQL mit denselben Daten aktualisiere, gibt es '0 betroffene Zeile' zurück und ich versuche, dasselbe in SQL Server zu tun, aber es gibt 1 betroffene Zeile zurück.Update-Abfrage in mysql nicht das gleiche Ergebnis in mssql


UPDATE stud_details 
set stud_fname = 'SHERWIN' 
WHERE stud_lrn = 20170610000 

mir Hilfe über die Abfrage für SQL Server, die 0 zurück, wenn Sie dieselben Daten aktualisieren

+1

Die Aussage ist sehr einfach und vollständig standardkonform. Es aktualisiert alle ros, wo "stud_lrn = 20170610000". Der Datentyp für "stud_lrn" sollte natürlich ein ganzzahliger Typ sein, d. H. "BIGINT" oder "DECIMAL (n, 0)". Versuchen Sie 'SELECT * FROM stud_details WHERE stud_lrn = 20170610000', um zu sehen, welche Zeilen mit der Bedingung übereinstimmen. –

+0

Existiert der Datensatz in beiden Datenbanken? – Peter

+0

@Thorsten Wenn ich die Abfrage versuche, sagtest du "stud_fname = SHERWN" 'und wenn ich den stud_fname aktualisiere und setze ihn auf "SHERWIN". Es wird 1 betroffene Zeile zurückgeben, selbst der Wert hat sich nicht geändert, anders als in MySQL –

Antwort

0

SQL Server Sie 1 Zeile erzählt betroffen war, weil 1 Zeile aktualisiert wurde. Wenn Sie betrügen wollen und haben 0 Zeilen stattdessen betroffen, können Sie es auf diese Weise tun:

set nocount on 

UPDATE stud_details 
set stud_fname = 'SHERWIN' 
WHERE stud_lrn = 20170610000 

set nocount off 

UPDATE stud_details 
set stud_fname = stud_fname 
WHERE 1=2 

für Ihre erste Abfrage sehen Sie nicht die Zeilen, die zweite Abfrage betroffen betroffen 0 Zeilen haben.

+0

finden wird Es funktioniert. Vielen Dank! Aber wenn ich 'nocount on' setze, ist der Rückgabewert immer 0. Ich benutze den Rückgabewert, um 'if else condition' in meiner App zu verwenden –

Verwandte Themen