Update sql-struktur.sql
This commit is contained in:
244
sql-struktur.sql
244
sql-struktur.sql
@@ -1,6 +1,9 @@
|
|||||||
-- Wechsel zur Datenbank 'engomo'
|
-- Wechsel zur Datenbank 'engomo'
|
||||||
USE engomo;
|
USE engomo;
|
||||||
|
|
||||||
|
-- Deklariere eine Variable für das Tabellenpräfix
|
||||||
|
DECLARE @TablePrefix NVARCHAR(128) = 'begehung_';
|
||||||
|
|
||||||
-- Deklariere eine Tabellenvariable mit den Endungen der Tabellennamen
|
-- Deklariere eine Tabellenvariable mit den Endungen der Tabellennamen
|
||||||
DECLARE @TableSuffixes TABLE (
|
DECLARE @TableSuffixes TABLE (
|
||||||
Suffix NVARCHAR(128)
|
Suffix NVARCHAR(128)
|
||||||
@@ -19,108 +22,108 @@ INSERT INTO @TableSuffixes (Suffix) VALUES
|
|||||||
|
|
||||||
-- Deklariere eine Tabellenvariable mit den Spalteninformationen
|
-- Deklariere eine Tabellenvariable mit den Spalteninformationen
|
||||||
DECLARE @ColumnsToAdd TABLE (
|
DECLARE @ColumnsToAdd TABLE (
|
||||||
Suffix NVARCHAR(128),
|
TableName NVARCHAR(128),
|
||||||
ColumnName NVARCHAR(128),
|
ColumnName NVARCHAR(128),
|
||||||
ColumnType NVARCHAR(128)
|
ColumnType NVARCHAR(128)
|
||||||
);
|
);
|
||||||
|
|
||||||
-- Füge die gewünschten Spalten hinzu, einschließlich begehung_stammdaten ohne engomoid
|
-- Füge die gewünschten Spalten hinzu, einschließlich begehung_stammdaten ohne engomoid
|
||||||
INSERT INTO @ColumnsToAdd (Suffix, ColumnName, ColumnType) VALUES
|
INSERT INTO @ColumnsToAdd (TableName, ColumnName, ColumnType) VALUES
|
||||||
-- begehung_extras
|
-- begehung_extras
|
||||||
('extras', 'engomoid', 'BIGINT NOT NULL'),
|
(@TablePrefix + 'extras', 'engomoid', 'BIGINT NOT NULL'),
|
||||||
('extras', 'raum_bezeichnung', 'VARCHAR(255)'),
|
(@TablePrefix + 'extras', 'raum_bezeichnung', 'VARCHAR(255)'),
|
||||||
('extras', 'handtuchheizkoerper', 'BIT'),
|
(@TablePrefix + 'extras', 'handtuchheizkoerper', 'BIT'),
|
||||||
('extras', 'badetuchhalter', 'BIT'),
|
(@TablePrefix + 'extras', 'badetuchhalter', 'BIT'),
|
||||||
('extras', 'waschmaschinenanschluss', 'BIT'),
|
(@TablePrefix + 'extras', 'waschmaschinenanschluss', 'BIT'),
|
||||||
('extras', 'notizen', 'TEXT'),
|
(@TablePrefix + 'extras', 'notizen', 'TEXT'),
|
||||||
|
|
||||||
-- begehung_raeume
|
-- begehung_raeume
|
||||||
('raeume', 'engomoid', 'BIGINT NOT NULL'),
|
(@TablePrefix + 'raeume', 'engomoid', 'BIGINT NOT NULL'),
|
||||||
('raeume', 'raumid', 'VARCHAR(255)'),
|
(@TablePrefix + 'raeume', 'raumid', 'VARCHAR(255)'),
|
||||||
('raeume', 'raum_bezeichnung', 'VARCHAR(255)'),
|
(@TablePrefix + 'raeume', 'raum_bezeichnung', 'VARCHAR(255)'),
|
||||||
('raeume', 'tapezieren', 'BIT'),
|
(@TablePrefix + 'raeume', 'tapezieren', 'BIT'),
|
||||||
('raeume', 'anstrich_tuerblatt', 'BIT'),
|
(@TablePrefix + 'raeume', 'anstrich_tuerblatt', 'BIT'),
|
||||||
('raeume', 'anstrich_tuerrahmen', 'BIT'),
|
(@TablePrefix + 'raeume', 'anstrich_tuerrahmen', 'BIT'),
|
||||||
('raeume', 'anstrich_tuerblatt_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'anstrich_tuerblatt_notizen', 'TEXT'),
|
||||||
('raeume', 'anstrich_heizkoerper', 'BIT'),
|
(@TablePrefix + 'raeume', 'anstrich_heizkoerper', 'BIT'),
|
||||||
('raeume', 'anstrich_heizkoerper_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'anstrich_heizkoerper_notizen', 'TEXT'),
|
||||||
('raeume', 'anstrich_decke', 'BIT'),
|
(@TablePrefix + 'raeume', 'anstrich_decke', 'BIT'),
|
||||||
('raeume', 'anstrich_decke_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'anstrich_decke_notizen', 'TEXT'),
|
||||||
('raeume', 'anstrich_waende', 'BIT'),
|
(@TablePrefix + 'raeume', 'anstrich_waende', 'BIT'),
|
||||||
('raeume', 'anstrich_waende_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'anstrich_waende_notizen', 'TEXT'),
|
||||||
('raeume', 'anstrich_fenster', 'BIT'),
|
(@TablePrefix + 'raeume', 'anstrich_fenster', 'BIT'),
|
||||||
('raeume', 'anstrich_fenster_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'anstrich_fenster_notizen', 'TEXT'),
|
||||||
('raeume', 'anstrich_fenstersims', 'BIT'),
|
(@TablePrefix + 'raeume', 'anstrich_fenstersims', 'BIT'),
|
||||||
('raeume', 'anstrich_fenstersims_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'anstrich_fenstersims_notizen', 'TEXT'),
|
||||||
('raeume', 'material_fenster', 'VARCHAR(255)'),
|
(@TablePrefix + 'raeume', 'material_fenster', 'VARCHAR(255)'),
|
||||||
('raeume', 'material_fenstersims', 'VARCHAR(255)'),
|
(@TablePrefix + 'raeume', 'material_fenstersims', 'VARCHAR(255)'),
|
||||||
('raeume', 'material_bodenbelag', 'VARCHAR(255)'),
|
(@TablePrefix + 'raeume', 'material_bodenbelag', 'VARCHAR(255)'),
|
||||||
('raeume', 'sonstiges_einbauschrank', 'BIT'),
|
(@TablePrefix + 'raeume', 'sonstiges_einbauschrank', 'BIT'),
|
||||||
('raeume', 'sonstiges_einbauschrank_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'sonstiges_einbauschrank_notizen', 'TEXT'),
|
||||||
('raeume', 'sonstiges_luefter', 'BIT'),
|
(@TablePrefix + 'raeume', 'sonstiges_luefter', 'BIT'),
|
||||||
('raeume', 'sonstiges_luefter_notizen', 'TEXT'),
|
(@TablePrefix + 'raeume', 'sonstiges_luefter_notizen', 'TEXT'),
|
||||||
('raeume', 'notizen_verursachung_mieter', 'TEXT'),
|
(@TablePrefix + 'raeume', 'notizen_verursachung_mieter', 'TEXT'),
|
||||||
('raeume', 'notizen_instandsetzung_mieter', 'TEXT'),
|
(@TablePrefix + 'raeume', 'notizen_instandsetzung_mieter', 'TEXT'),
|
||||||
('raeume', 'notizen_instandsetzung_vermieter', 'TEXT'),
|
(@TablePrefix + 'raeume', 'notizen_instandsetzung_vermieter', 'TEXT'),
|
||||||
|
|
||||||
-- begehung_badewanne
|
-- begehung_badewanne
|
||||||
('badewanne', 'engomoid', 'BIGINT NOT NULL'),
|
(@TablePrefix + 'badewanne', 'engomoid', 'BIGINT NOT NULL'),
|
||||||
('badewanne', 'raum_bezeichnung', 'VARCHAR(255)'),
|
(@TablePrefix + 'badewanne', 'raum_bezeichnung', 'VARCHAR(255)'),
|
||||||
('badewanne', 'ablauf_mit_stoepsel', 'BIT'),
|
(@TablePrefix + 'badewanne', 'ablauf_mit_stoepsel', 'BIT'),
|
||||||
('badewanne', 'excenter_garnitur', 'BIT'),
|
(@TablePrefix + 'badewanne', 'excenter_garnitur', 'BIT'),
|
||||||
('badewanne', 'griff', 'BIT'),
|
(@TablePrefix + 'badewanne', 'griff', 'BIT'),
|
||||||
('badewanne', 'handbrause_mit_schlauch', 'BIT'),
|
(@TablePrefix + 'badewanne', 'handbrause_mit_schlauch', 'BIT'),
|
||||||
|
|
||||||
-- begehung_dusche
|
-- begehung_dusche
|
||||||
('dusche', 'engomoid', 'BIGINT NOT NULL'),
|
(@TablePrefix + 'dusche', 'engomoid', 'BIGINT NOT NULL'),
|
||||||
('dusche', 'raum_bezeichnung', 'VARCHAR(255)'),
|
(@TablePrefix + 'dusche', 'raum_bezeichnung', 'VARCHAR(255)'),
|
||||||
('dusche', 'ablagekorb', 'BIT'),
|
(@TablePrefix + 'dusche', 'ablagekorb', 'BIT'),
|
||||||
('dusche', 'duschabtrennung', 'BIT'),
|
(@TablePrefix + 'dusche', 'duschabtrennung', 'BIT'),
|
||||||
('dusche', 'duschkabine', 'BIT'),
|
(@TablePrefix + 'dusche', 'duschkabine', 'BIT'),
|
||||||
('dusche', 'duschstange', 'BIT'),
|
(@TablePrefix + 'dusche', 'duschstange', 'BIT'),
|
||||||
('dusche', 'duschstange_mit_seifenschale', 'BIT'),
|
(@TablePrefix + 'dusche', 'duschstange_mit_seifenschale', 'BIT'),
|
||||||
('dusche', 'dusche_bodengleich', 'BIT'),
|
(@TablePrefix + 'dusche', 'dusche_bodengleich', 'BIT'),
|
||||||
('dusche', 'duschtasse', 'BIT'),
|
(@TablePrefix + 'dusche', 'duschtasse', 'BIT'),
|
||||||
('dusche', 'handbrause_mit_schlauch', 'BIT'),
|
(@TablePrefix + 'dusche', 'handbrause_mit_schlauch', 'BIT'),
|
||||||
|
|
||||||
-- begehung_waschbecken
|
-- begehung_waschbecken
|
||||||
('waschbecken', 'engomoid', 'BIGINT NOT NULL'),
|
(@TablePrefix + 'waschbecken', 'engomoid', 'BIGINT NOT NULL'),
|
||||||
('waschbecken', 'raum_bezeichnung', 'VARCHAR(255)'),
|
(@TablePrefix + 'waschbecken', 'raum_bezeichnung', 'VARCHAR(255)'),
|
||||||
('waschbecken', 'ablauf_mit_stoepsel', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'ablauf_mit_stoepsel', 'BIT'),
|
||||||
('waschbecken', 'doppelhandtuchhalter', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'doppelhandtuchhalter', 'BIT'),
|
||||||
('waschbecken', 'doppelwaschbecken', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'doppelwaschbecken', 'BIT'),
|
||||||
('waschbecken', 'doppelwaschtisch', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'doppelwaschtisch', 'BIT'),
|
||||||
('waschbecken', 'excenter_garnitur', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'excenter_garnitur', 'BIT'),
|
||||||
('waschbecken', 'handtuchhalter', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'handtuchhalter', 'BIT'),
|
||||||
('waschbecken', 'handtuchhaken', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'handtuchhaken', 'BIT'),
|
||||||
('waschbecken', 'konsole', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'konsole', 'BIT'),
|
||||||
('waschbecken', 'seifenschale', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'seifenschale', 'BIT'),
|
||||||
('waschbecken', 'spiegelleuchte', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'spiegelleuchte', 'BIT'),
|
||||||
('waschbecken', 'waschbecken', 'BIT'),
|
(@TablePrefix + 'waschbecken', 'waschbecken', 'BIT'),
|
||||||
|
|
||||||
-- begehung_toilette
|
-- begehung_toilette
|
||||||
('toilette', 'engomoid', 'BIGINT NOT NULL'),
|
(@TablePrefix + 'toilette', 'engomoid', 'BIGINT NOT NULL'),
|
||||||
('toilette', 'raum_bezeichnung', 'VARCHAR(255)'),
|
(@TablePrefix + 'toilette', 'raum_bezeichnung', 'VARCHAR(255)'),
|
||||||
('toilette', 'sitz_mit_deckel', 'BIT'),
|
(@TablePrefix + 'toilette', 'sitz_mit_deckel', 'BIT'),
|
||||||
('toilette', 'sitz_mit_deckel_softclose', 'BIT'),
|
(@TablePrefix + 'toilette', 'sitz_mit_deckel_softclose', 'BIT'),
|
||||||
('toilette', 'toilettenpapierhalter', 'BIT'),
|
(@TablePrefix + 'toilette', 'toilettenpapierhalter', 'BIT'),
|
||||||
|
|
||||||
-- begehung_stammdaten
|
-- begehung_stammdaten
|
||||||
('stammdaten', 'Vertrag', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Vertrag', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'Wirtschaftseinheit', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Wirtschaftseinheit', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'Mietobjekt', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Mietobjekt', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'Strasse_und_Hausnummer', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Strasse_und_Hausnummer', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'Postleitzahl', 'NVARCHAR(20)'),
|
(@TablePrefix + 'stammdaten', 'Postleitzahl', 'NVARCHAR(20)'),
|
||||||
('stammdaten', 'Ort', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Ort', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'LeerstBeleg_ab', 'DATE'),
|
(@TablePrefix + 'stammdaten', 'LeerstBeleg_ab', 'DATE'),
|
||||||
('stammdaten', 'Geschoss_Kurzbez', 'NVARCHAR(50)'),
|
(@TablePrefix + 'stammdaten', 'Geschoss_Kurzbez', 'NVARCHAR(50)'),
|
||||||
('stammdaten', 'Lage_im_Geschoss', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Lage_im_Geschoss', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'Anzahl_Raeume', 'INT'),
|
(@TablePrefix + 'stammdaten', 'Anzahl_Raeume', 'INT'),
|
||||||
('stammdaten', 'Anzahl_halbe_Raeume', 'INT'),
|
(@TablePrefix + 'stammdaten', 'Anzahl_halbe_Raeume', 'INT'),
|
||||||
('stammdaten', 'Hauptnutzflaeche', 'DECIMAL(18,2)'),
|
(@TablePrefix + 'stammdaten', 'Hauptnutzflaeche', 'DECIMAL(18,2)'),
|
||||||
('stammdaten', 'Geschaeftspartner', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Geschaeftspartner', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'Mietername', 'NVARCHAR(255)'),
|
(@TablePrefix + 'stammdaten', 'Mietername', 'NVARCHAR(255)'),
|
||||||
('stammdaten', 'Name_weiterer_Mieter', 'NVARCHAR(255)');
|
(@TablePrefix + 'stammdaten', 'Name_weiterer_Mieter', 'NVARCHAR(255)');
|
||||||
|
|
||||||
-- Deklariere Variablen für die Tabellen-Schleife
|
-- Deklariere Variablen für die Tabellen-Schleife
|
||||||
DECLARE @CurrentSuffix NVARCHAR(128);
|
DECLARE @CurrentSuffix NVARCHAR(128);
|
||||||
@@ -140,7 +143,7 @@ WHILE @@FETCH_STATUS = 0
|
|||||||
BEGIN
|
BEGIN
|
||||||
BEGIN TRY
|
BEGIN TRY
|
||||||
-- Erstelle den vollständigen Tabellennamen mit dem Präfix
|
-- Erstelle den vollständigen Tabellennamen mit dem Präfix
|
||||||
SET @FullTableName = 'begehung_' + @CurrentSuffix;
|
SET @FullTableName = @TablePrefix + @CurrentSuffix;
|
||||||
|
|
||||||
-- Überprüfe, ob die Tabelle bereits existiert in der Datenbank 'engomo'
|
-- Überprüfe, ob die Tabelle bereits existiert in der Datenbank 'engomo'
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
@@ -156,7 +159,7 @@ BEGIN
|
|||||||
SET @CreateTableColumns = (
|
SET @CreateTableColumns = (
|
||||||
SELECT STRING_AGG('[' + ColumnName + '] ' + ColumnType, ', ')
|
SELECT STRING_AGG('[' + ColumnName + '] ' + ColumnType, ', ')
|
||||||
FROM @ColumnsToAdd
|
FROM @ColumnsToAdd
|
||||||
WHERE Suffix = @CurrentSuffix
|
WHERE TableName = @FullTableName
|
||||||
);
|
);
|
||||||
|
|
||||||
IF @CreateTableColumns IS NULL OR LEN(@CreateTableColumns) = 0
|
IF @CreateTableColumns IS NULL OR LEN(@CreateTableColumns) = 0
|
||||||
@@ -196,19 +199,13 @@ DECLARE @PKName NVARCHAR(128);
|
|||||||
DECLARE @AddPKSQL NVARCHAR(MAX);
|
DECLARE @AddPKSQL NVARCHAR(MAX);
|
||||||
|
|
||||||
DECLARE pk_cursor CURSOR FOR
|
DECLARE pk_cursor CURSOR FOR
|
||||||
SELECT DISTINCT Suffix + '_engomoid'
|
SELECT DISTINCT TableName
|
||||||
FROM @ColumnsToAdd
|
FROM @ColumnsToAdd
|
||||||
WHERE ColumnName = 'engomoid';
|
WHERE ColumnName = 'engomoid';
|
||||||
|
|
||||||
-- Alternative: Direkt die Tabellen, die 'engomoid' haben
|
OPEN pk_cursor;
|
||||||
DECLARE pk_cursor_correct CURSOR FOR
|
|
||||||
SELECT DISTINCT 'begehung_' + Suffix
|
|
||||||
FROM @ColumnsToAdd
|
|
||||||
WHERE ColumnName = 'engomoid';
|
|
||||||
|
|
||||||
OPEN pk_cursor_correct;
|
FETCH NEXT FROM pk_cursor INTO @CurrentTable;
|
||||||
|
|
||||||
FETCH NEXT FROM pk_cursor_correct INTO @CurrentTable;
|
|
||||||
|
|
||||||
WHILE @@FETCH_STATUS = 0
|
WHILE @@FETCH_STATUS = 0
|
||||||
BEGIN
|
BEGIN
|
||||||
@@ -243,62 +240,58 @@ BEGIN
|
|||||||
END CATCH
|
END CATCH
|
||||||
|
|
||||||
-- Hole den nächsten TableName
|
-- Hole den nächsten TableName
|
||||||
FETCH NEXT FROM pk_cursor_correct INTO @CurrentTable;
|
FETCH NEXT FROM pk_cursor INTO @CurrentTable;
|
||||||
END
|
END
|
||||||
|
|
||||||
-- Schließe und deallokiere den Cursor
|
-- Schließe und deallokiere den Cursor
|
||||||
CLOSE pk_cursor_correct;
|
CLOSE pk_cursor;
|
||||||
DEALLOCATE pk_cursor_correct;
|
DEALLOCATE pk_cursor;
|
||||||
|
|
||||||
-- Deklariere Variablen für die Spalten-Schleife
|
-- Deklariere Variablen für die Spalten-Schleife
|
||||||
DECLARE @Suffix NVARCHAR(128);
|
DECLARE @TargetTable NVARCHAR(128);
|
||||||
DECLARE @TargetTableName NVARCHAR(128);
|
|
||||||
DECLARE @CurrentColumn NVARCHAR(128);
|
DECLARE @CurrentColumn NVARCHAR(128);
|
||||||
DECLARE @ColumnType NVARCHAR(128);
|
DECLARE @ColumnType NVARCHAR(128);
|
||||||
DECLARE @AddColumnSQL NVARCHAR(MAX);
|
DECLARE @AddColumnSQL NVARCHAR(MAX);
|
||||||
|
|
||||||
-- Deklariere und öffne einen Cursor, um durch die Spalten zu iterieren
|
-- Deklariere und öffne einen Cursor, um durch die Spalten zu iterieren
|
||||||
DECLARE column_cursor CURSOR FOR
|
DECLARE column_cursor CURSOR FOR
|
||||||
SELECT Suffix, ColumnName, ColumnType FROM @ColumnsToAdd;
|
SELECT TableName, ColumnName, ColumnType FROM @ColumnsToAdd;
|
||||||
|
|
||||||
OPEN column_cursor;
|
OPEN column_cursor;
|
||||||
|
|
||||||
FETCH NEXT FROM column_cursor INTO @Suffix, @CurrentColumn, @ColumnType;
|
FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn, @ColumnType;
|
||||||
|
|
||||||
WHILE @@FETCH_STATUS = 0
|
WHILE @@FETCH_STATUS = 0
|
||||||
BEGIN
|
BEGIN
|
||||||
BEGIN TRY
|
BEGIN TRY
|
||||||
-- Rekonstruiere den vollständigen Tabellennamen
|
|
||||||
SET @TargetTableName = 'begehung_' + @Suffix;
|
|
||||||
|
|
||||||
-- Überprüfe, ob die Spalte bereits existiert
|
-- Überprüfe, ob die Spalte bereits existiert
|
||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM INFORMATION_SCHEMA.COLUMNS
|
FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
WHERE TABLE_NAME = @TargetTableName
|
WHERE TABLE_NAME = @TargetTable
|
||||||
AND COLUMN_NAME = @CurrentColumn
|
AND COLUMN_NAME = @CurrentColumn
|
||||||
AND TABLE_SCHEMA = 'dbo'
|
AND TABLE_SCHEMA = 'dbo'
|
||||||
)
|
)
|
||||||
BEGIN
|
BEGIN
|
||||||
-- Definiere das ALTER TABLE Statement zum Hinzufügen der Spalte
|
-- Definiere das ALTER TABLE Statement zum Hinzufügen der Spalte
|
||||||
SET @AddColumnSQL = N'ALTER TABLE dbo.[' + @TargetTableName + N'] ADD [' + @CurrentColumn + N'] ' + @ColumnType + N';';
|
SET @AddColumnSQL = N'ALTER TABLE dbo.[' + @TargetTable + N'] ADD [' + @CurrentColumn + N'] ' + @ColumnType + N';';
|
||||||
|
|
||||||
-- Führe das dynamische SQL aus
|
-- Führe das dynamische SQL aus
|
||||||
EXEC sp_executesql @AddColumnSQL;
|
EXEC sp_executesql @AddColumnSQL;
|
||||||
|
|
||||||
PRINT 'Spalte ' + @CurrentColumn + ' wurde zu ' + @TargetTableName + ' hinzugefügt.';
|
PRINT 'Spalte ' + @CurrentColumn + ' wurde zu ' + @TargetTable + ' hinzugefügt.';
|
||||||
END
|
END
|
||||||
ELSE
|
ELSE
|
||||||
BEGIN
|
BEGIN
|
||||||
PRINT 'Spalte ' + @CurrentColumn + ' existiert bereits in ' + @TargetTableName + '.';
|
PRINT 'Spalte ' + @CurrentColumn + ' existiert bereits in ' + @TargetTable + '.';
|
||||||
END
|
END
|
||||||
END TRY
|
END TRY
|
||||||
BEGIN CATCH
|
BEGIN CATCH
|
||||||
PRINT 'Fehler beim Hinzufügen der Spalte ' + @CurrentColumn + ' zu ' + @TargetTableName + ': ' + ERROR_MESSAGE();
|
PRINT 'Fehler beim Hinzufügen der Spalte ' + @CurrentColumn + ' zu ' + @TargetTable + ': ' + ERROR_MESSAGE();
|
||||||
END CATCH
|
END CATCH
|
||||||
|
|
||||||
-- Hole die nächste Spalte
|
-- Hole die nächste Spalte
|
||||||
FETCH NEXT FROM column_cursor INTO @Suffix, @CurrentColumn, @ColumnType;
|
FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn, @ColumnType;
|
||||||
END
|
END
|
||||||
|
|
||||||
-- Schließe und deallokiere den Spalten-Cursor
|
-- Schließe und deallokiere den Spalten-Cursor
|
||||||
@@ -311,25 +304,22 @@ DECLARE @DeleteColumnSQL NVARCHAR(MAX);
|
|||||||
|
|
||||||
-- Deklariere und öffne einen Cursor, um durch die Tabellen zu iterieren
|
-- Deklariere und öffne einen Cursor, um durch die Tabellen zu iterieren
|
||||||
DECLARE delete_cursor CURSOR FOR
|
DECLARE delete_cursor CURSOR FOR
|
||||||
SELECT DISTINCT Suffix FROM @ColumnsToAdd;
|
SELECT DISTINCT TableName FROM @ColumnsToAdd;
|
||||||
|
|
||||||
OPEN delete_cursor;
|
OPEN delete_cursor;
|
||||||
|
|
||||||
FETCH NEXT FROM delete_cursor INTO @Suffix;
|
FETCH NEXT FROM delete_cursor INTO @TargetTable;
|
||||||
|
|
||||||
WHILE @@FETCH_STATUS = 0
|
WHILE @@FETCH_STATUS = 0
|
||||||
BEGIN
|
BEGIN
|
||||||
BEGIN TRY
|
BEGIN TRY
|
||||||
-- Rekonstruiere den vollständigen Tabellennamen
|
|
||||||
SET @TargetTableName = 'begehung_' + @Suffix;
|
|
||||||
|
|
||||||
-- Hole alle existierenden Spalten in der Tabelle
|
-- Hole alle existierenden Spalten in der Tabelle
|
||||||
DECLARE @ExistingColumns TABLE (ColumnName NVARCHAR(128));
|
DECLARE @ExistingColumns TABLE (ColumnName NVARCHAR(128));
|
||||||
|
|
||||||
INSERT INTO @ExistingColumns (ColumnName)
|
INSERT INTO @ExistingColumns (ColumnName)
|
||||||
SELECT COLUMN_NAME
|
SELECT COLUMN_NAME
|
||||||
FROM INFORMATION_SCHEMA.COLUMNS
|
FROM INFORMATION_SCHEMA.COLUMNS
|
||||||
WHERE TABLE_NAME = @TargetTableName
|
WHERE TABLE_NAME = @TargetTable
|
||||||
AND TABLE_SCHEMA = 'dbo';
|
AND TABLE_SCHEMA = 'dbo';
|
||||||
|
|
||||||
-- Iteriere durch jede existierende Spalte
|
-- Iteriere durch jede existierende Spalte
|
||||||
@@ -346,27 +336,27 @@ BEGIN
|
|||||||
IF NOT EXISTS (
|
IF NOT EXISTS (
|
||||||
SELECT 1
|
SELECT 1
|
||||||
FROM @ColumnsToAdd
|
FROM @ColumnsToAdd
|
||||||
WHERE Suffix = @Suffix
|
WHERE TableName = @TargetTable
|
||||||
AND ColumnName = @ExistingColumnLoop
|
AND ColumnName = @ExistingColumnLoop
|
||||||
)
|
)
|
||||||
BEGIN
|
BEGIN
|
||||||
BEGIN TRY
|
BEGIN TRY
|
||||||
-- Definiere das ALTER TABLE Statement zum Löschen der Spalte
|
-- Definiere das ALTER TABLE Statement zum Löschen der Spalte
|
||||||
SET @DeleteColumnSQL = N'ALTER TABLE dbo.[' + @TargetTableName + N'] DROP COLUMN [' + @ExistingColumnLoop + N'];';
|
SET @DeleteColumnSQL = N'ALTER TABLE dbo.[' + @TargetTable + N'] DROP COLUMN [' + @ExistingColumnLoop + N'];';
|
||||||
|
|
||||||
-- Führe das dynamische SQL aus
|
-- Führe das dynamische SQL aus
|
||||||
EXEC sp_executesql @DeleteColumnSQL;
|
EXEC sp_executesql @DeleteColumnSQL;
|
||||||
|
|
||||||
PRINT 'Spalte ' + @ExistingColumnLoop + ' wurde aus ' + @TargetTableName + ' gelöscht.';
|
PRINT 'Spalte ' + @ExistingColumnLoop + ' wurde aus ' + @TargetTable + ' gelöscht.';
|
||||||
END TRY
|
END TRY
|
||||||
BEGIN CATCH
|
BEGIN CATCH
|
||||||
-- Ignoriere den Fehler und fahre fort
|
-- Ignoriere den Fehler und fahre fort
|
||||||
PRINT 'Fehler beim Löschen der Spalte ' + @ExistingColumnLoop + ' aus ' + @TargetTableName + ': ' + ERROR_MESSAGE();
|
PRINT 'Fehler beim Löschen der Spalte ' + @ExistingColumnLoop + ' aus ' + @TargetTable + ': ' + ERROR_MESSAGE();
|
||||||
END CATCH
|
END CATCH
|
||||||
END
|
END
|
||||||
ELSE
|
ELSE
|
||||||
BEGIN
|
BEGIN
|
||||||
PRINT 'Spalte ' + @ExistingColumnLoop + ' ist erlaubt in ' + @TargetTableName + '.';
|
PRINT 'Spalte ' + @ExistingColumnLoop + ' ist erlaubt in ' + @TargetTable + '.';
|
||||||
END
|
END
|
||||||
|
|
||||||
FETCH NEXT FROM ExistingColumnCursor INTO @ExistingColumnLoop;
|
FETCH NEXT FROM ExistingColumnCursor INTO @ExistingColumnLoop;
|
||||||
@@ -377,13 +367,13 @@ BEGIN
|
|||||||
DEALLOCATE ExistingColumnCursor;
|
DEALLOCATE ExistingColumnCursor;
|
||||||
END TRY
|
END TRY
|
||||||
BEGIN CATCH
|
BEGIN CATCH
|
||||||
PRINT 'Fehler beim Überprüfen/Löschen von Spalten in ' + @TargetTableName + ': ' + ERROR_MESSAGE();
|
PRINT 'Fehler beim Überprüfen/Löschen von Spalten in ' + @TargetTable + ': ' + ERROR_MESSAGE();
|
||||||
END CATCH
|
END CATCH
|
||||||
|
|
||||||
-- Hole den nächsten Suffix
|
-- Hole den nächsten TableName
|
||||||
FETCH NEXT FROM delete_cursor INTO @Suffix;
|
FETCH NEXT FROM delete_cursor INTO @TargetTable;
|
||||||
END
|
END
|
||||||
|
|
||||||
-- Schließe und deallokiere den Lösch-Cursor
|
-- Schließe und deallokiere den Lösch-Cursor
|
||||||
CLOSE delete_cursor;
|
CLOSE delete_cursor;
|
||||||
DEALLOCATE delete_cursor;
|
DEALLOCATE delete_cursor;
|
||||||
|
|||||||
Reference in New Issue
Block a user