In meiner Datenbank gibt es 85 Tabellen und rund 62 Tabellen haben eine gemeinsame Spalte ArchiveID
. Ich habe andere Tabelle EDSArchiveHistory
Aktualisieren mehrerer Tabellen mit einer einzigen Abfrage in SQL Server
CREATE TABLE [dbo].[EDSArchiveHistory]
(
[ArchiveID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,
[ArchiveDate] [datetime] NOT NULL,
[ArchiveName] [nvarchar](200) NOT NULL
)
Wenn ich alle Datensätze in EDSArchiveHistor
einzufügen, ich die ArchiveID
des eingefügten Datensatz zu übernehmen möchten, und alle Tabellen aktualisieren, die eine ArchiveID
Spalte haben.
Grundsätzlich schreibe ich Abfrage alle Tabellen zu finden, die ArchiveID
Spalte
SELECT NAME
FROM SYS.TABLES
WHERE OBJECT_ID IN (SELECT OBJECT_ID AS NAME
FROM SYS.COLUMNS
WHERE NAME LIKE '%ARCHIVEID%')
AND NAME <> 'EDSARCHIVEHISTORY'
ORDER BY NAME
haben, aber ich weiß nicht, wie diese Tabellen mit einer einzigen Abfrage zu aktualisieren.
Bitte helfen Sie mir, wenn es möglich ist.
Sie können es durch Trigger oder gespeicherte Prozedur tun. –
Sie müssen eine gespeicherte Prozedur schreiben, die eine Schleife über jede Tabelle in einem Datensatz/Cursor ausführt und dann eine dynamische Anweisung ausführt, um diese Tabelle mit einem gegebenen archieid zu aktualisieren (wahrscheinlich, wo archividid null ist). –
Ja, ich werde durch Trigger gehen, aber ich nicht, welche Abfrage zu schreiben, um alle Tabellen innerhalb Trigger zu aktualisieren. Wenn ich mehrere Update-Abfrage schreibe, muss ich 60+ Update-Abfrage schreiben. Ich denke, das ist kein guter Ansatz. – Anjyr