2017-03-16 1 views
0

I Ansicht, die Darstellung von doppelten guids enthältaktualisieren Tabellenzeilen, die gleich sind sehen Reihe

GUID 
---- 
1234 
5524 
1111 

Dann habe ich Tabelle wie folgt aus:

ID|SomeColumn|GUID 
--+----------+---- 
1 |value1 |1111 
2 |value1 |1112 
3 |value1 |1113 
4 |value1 |5524 
5 |value1 |1234 

I Schleife erstellen möchten, die zu Fuß durch diese Tabelle und aktualisieren Sie die Zeilen, in denen die GUID der GUID dieser Sicht (Tabelle) entspricht.

ich diese gebunden:

UPDATE DT 
    SET [GUID] = dbo.CREATE_UNIQUE_GUID(ID) 
    FROM [DetailsTable] as DT 
    INNER JOIN GUID_Duplicates as GD 
     ON DT.GUID=GD.GUID 
     WHERE DT.GUID=GD.GUID 

Und haben: Ungültige Verwendung eines Seiten bewirken Operator 'UPDATE' innerhalb einer Funktion.

So in Pseudo-Code Ich mag:

foreach in doppelter Tabelle duplizieren, wenn Datatable Reihe mit gleichem GUID Satz neu generierten Wert GUID enthält.

Hinweis: dass ich guid Generation arbeiten, so dass ich einfach nicht sicher bin, wie man durch diese DataTable mit jedem Wert der Ansicht durchgeht. Auch DataTable kann mehrere Zeilen haben, wobei GUID jeder GUID von View entspricht.

+2

Tag Ihre Frage mit der Datenbank, die Sie verwenden. Zeigen Sie auch den Programmierblock an, in dem Sie diesen Code haben. –

Antwort

1

Verwenden direkt SELECT-Klausel für UPDATE-Anweisung:

UPDATE [DetailsTable] SET [DetailsTable].[GUID] = dbo.CREATE_UNIQUE_GUID(ID) 
FROM [GUID_Duplicates] 
WHERE [DetailsTable].GUID = [GUID_Duplicates].GUID 
+0

Wenn die ursprüngliche Abfrage fehlschlägt, schlägt dies fehl. –

+0

Das ist besser Abfrage als meine, ich mag es. Aber wahrscheinlich war Grund, wie ich meine innere Funktion benutzte. Vielen Dank. – maximelian1986

Verwandte Themen