Update sql-struktur.sql

deklarationen zu beginn für übersichtlichkeit
This commit is contained in:
2024-10-20 18:20:58 +00:00
parent 60e18f74ae
commit b4db924b6b

View File

@@ -1,6 +1,8 @@
-- Wechsel zur Datenbank 'engomo'
USE engomo;
-- Deklariere alle benötigten Variablen und Tabellen zu Beginn
-- Deklariere eine Variable für das Tabellenpräfix
DECLARE @TablePrefix NVARCHAR(128) = 'begehung_';
@@ -9,6 +11,17 @@ DECLARE @TableSuffixes TABLE (
Suffix NVARCHAR(128)
);
-- Deklariere eine Tabellenvariable mit den Spalteninformationen
DECLARE @ColumnsToAdd TABLE (
TableName NVARCHAR(128),
ColumnName NVARCHAR(128)
);
-- Deklariere Variablen für die Spalten-Schleife
DECLARE @TargetTable NVARCHAR(128);
DECLARE @CurrentColumn NVARCHAR(128);
DECLARE @AddColumnSQL NVARCHAR(MAX);
-- Füge die gewünschten Tabellennamen-Endungen hinzu
INSERT INTO @TableSuffixes (Suffix) VALUES
('extras'),
@@ -20,12 +33,6 @@ INSERT INTO @TableSuffixes (Suffix) VALUES
('allgemein'),
('usersettings');
-- Deklariere eine Tabellenvariable mit den Spalteninformationen
DECLARE @ColumnsToAdd TABLE (
TableName NVARCHAR(128),
ColumnName NVARCHAR(128)
);
-- Füge die gewünschten Spalten hinzu, einschließlich begehung_stammdaten ohne engomoid
INSERT INTO @ColumnsToAdd (TableName, ColumnName) VALUES
-- begehung_extras
@@ -111,66 +118,66 @@ INSERT INTO @ColumnsToAdd (TableName, ColumnName) VALUES
(@TablePrefix + 'usersettings', 'user_mail'),
(@TablePrefix + 'usersettings', 'user_theme');
-- Deklariere Variablen für die Spalten-Schleife
DECLARE @TargetTable NVARCHAR(128);
DECLARE @CurrentColumn NVARCHAR(128);
DECLARE @AddColumnSQL NVARCHAR(MAX);
-- Deklariere und öffne einen Cursor, um durch die Spalten zu iterieren
-- Verwende eine set-basierte Methode, um durch die Spalten zu iterieren
DECLARE column_cursor CURSOR FOR
SELECT TableName, ColumnName FROM @ColumnsToAdd;
OPEN column_cursor;
FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn;
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRY
-- Überprüfe, ob die Tabelle existiert, andernfalls erstelle die Tabelle
IF NOT EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @TargetTable
AND TABLE_SCHEMA = 'dbo'
)
BEGIN
-- Erstelle die Tabelle, wenn sie nicht existiert
DECLARE @CreateTableSQL NVARCHAR(MAX);
SET @CreateTableSQL = N'CREATE TABLE dbo.[' + @TargetTable + N'] (' + @CurrentColumn + N' NVARCHAR(255));';
EXEC sp_executesql @CreateTableSQL;
PRINT 'Tabelle ' + @TargetTable + ' wurde erstellt.';
END
-- Überprüfe, ob die Spalte bereits existiert
IF NOT EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TargetTable
AND COLUMN_NAME = @CurrentColumn
AND TABLE_SCHEMA = 'dbo'
)
BEGIN
-- Definiere das ALTER TABLE Statement zum Hinzufügen der Spalte mit NVARCHAR(255) Typ
SET @AddColumnSQL = N'ALTER TABLE dbo.[' + @TargetTable + N'] ADD [' + @CurrentColumn + N'] NVARCHAR(255);';
-- Führe das dynamische SQL aus
EXEC sp_executesql @AddColumnSQL;
PRINT 'Spalte ' + @CurrentColumn + ' wurde zu ' + @TargetTable + ' hinzugefügt.';
END
ELSE
BEGIN
PRINT 'Spalte ' + @CurrentColumn + ' existiert bereits in ' + @TargetTable + '.';
END
END TRY
BEGIN CATCH
PRINT 'Fehler beim Hinzufügen der Spalte ' + @CurrentColumn + ' zu ' + @TargetTable + ': ' + ERROR_MESSAGE();
END CATCH
-- Hole die nächste Spalte
BEGIN TRY
FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn;
END
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN TRY
-- Überprüfe, ob die Tabelle existiert, andernfalls erstelle die Tabelle
IF NOT EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = @TargetTable
AND TABLE_SCHEMA = 'dbo'
)
BEGIN
-- Erstelle die Tabelle, wenn sie nicht existiert
DECLARE @CreateTableSQL NVARCHAR(MAX);
SET @CreateTableSQL = N'CREATE TABLE dbo.[' + @TargetTable + N'] (' + @CurrentColumn + N' NVARCHAR(255));';
EXEC sp_executesql @CreateTableSQL;
PRINT 'Tabelle ' + @TargetTable + ' wurde erstellt.';
END
-- Überprüfe, ob die Spalte bereits existiert
IF NOT EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TargetTable
AND COLUMN_NAME = @CurrentColumn
AND TABLE_SCHEMA = 'dbo'
)
BEGIN
-- Definiere das ALTER TABLE Statement zum Hinzufügen der Spalte mit NVARCHAR(255) Typ
SET @AddColumnSQL = N'ALTER TABLE dbo.[' + @TargetTable + N'] ADD [' + @CurrentColumn + N'] NVARCHAR(255);';
-- Führe das dynamische SQL aus
EXEC sp_executesql @AddColumnSQL;
PRINT 'Spalte ' + @CurrentColumn + ' wurde zu ' + @TargetTable + ' hinzugefügt.';
END
ELSE
BEGIN
PRINT 'Spalte ' + @CurrentColumn + ' existiert bereits in ' + @TargetTable + '.';
END
END TRY
BEGIN CATCH
PRINT 'Fehler beim Hinzufügen der Spalte ' + @CurrentColumn + ' zu ' + @TargetTable + ': ' + ERROR_MESSAGE();
END CATCH
-- Hole die nächste Spalte
FETCH NEXT FROM column_cursor INTO @TargetTable, @CurrentColumn;
END
END TRY
BEGIN CATCH
PRINT 'Fehler während der Cursor-Iteration: ' + ERROR_MESSAGE();
END CATCH
-- Schließe und deallokiere den Spalten-Cursor
CLOSE column_cursor;