Scenariusz:
Pracujesz w Auto Insurance Company jako programista SQL Server. Twoja firma posiada bazę danych, w której ma ponad 300 tabel. W początkowym projekcie zapomnieli dodać kolumny audytu, takie jak CreatedBy i CreatedOn. Chcą, abyś wygenerował Dodaj kolumnę CreatedBy i CreatedOn dla wszystkich tabel w bazie danych. Jak byś to zrobił?Rozwiązanie:
Istnieje wiele sposobów na wygenerowanie instrukcji SQL dla powyższych wymagań, zamierzamy zachować prostotę i szybkość. Użyjemy Select Query do wygenerowania instrukcji Add Column Statements dla wszystkich tabel.Wygenerujmy skrypty w taki sposób, abyśmy za każdym razem musieli wprowadzać bardzo małe zmiany i moglibyśmy w każdej chwili dodać nową kolumnę. Zadeklarowałem dwie zmienne, @ColumnName i @ColumnDataType. Raz podamy wartości zmiennych. Zapytanie Select sprawdzi wszystkie tabele i jeśli kolumna nie istnieje dla tabeli, wygeneruje instrukcję Add Column.
--Declare Variables for Column Name and Data Type Declare @ColumnName VARCHAR(100) Declare @ColumnDataType VARCHAR(50) --Set the Values for Variables SET @ColumnName='CreatedBy' SET @ColumnDataType='VARCHAR(50)' --Run the Query and copy results and paste in new window to run. Select 'ALTER Table ['+Table_Schema+'].['+Table_Name+'] ' +'Add '+@ColumnName+' '+@ColumnDataType AS AddColumnQuery from Information_Schema.Tables T where T.Table_Type='BASE TABLE' And Not exists ( Select 1 from INFORMATION_SCHEMA.COLUMNS C WHERE C.TABLE_Name=T.Table_Name and Column_Name=@ColumnName)
Uruchom powyższe zapytanie i skopiuj wyniki do nowych okien zapytań, wybierz bazę danych, na której chcesz uruchomić i wykonać.
Jak wygenerować instrukcję SQL dodawania kolumn dla wszystkich tabel w bazie danych — samouczek T-SQL
Prezentacja wideo:Generuj instrukcję dodawania/upuszczania kolumny dla wszystkich tabel w bazie danych w programie SQL Server