| 

.NET C# Java Javascript Exception

3
In "unbeaufsichtigt" ausgeführten T-SQL-Deployment-Skripten muss vor jedem ADD COLUMN geprüft werden, ob es die Spalte schon gibt.

if ((select COUNT(*) from information_schema.columns where TABLE_NAME = 'XXX'
and COLUMN_NAME = 'YYY' and TABLE_SCHEMA = 'dbo') = 0)


ist okay, aber wenn es etwas Eleganteres gibt, wäre ich über einen Hinweis dankbar. Bisher hab ich in der MSDN-Referenz keine System Stored Function gefunden, aber ...
21.11.2012
mupan 575 1 8
Schade, dass mir die codekicker-Software im tag den underscore in information_schema verhagelt. Wenn eineR weiß, was sie / er sucht, und die Suche es genau nimmt ...
mupan 21.11.2012
2 Antworten
1
Basierend auf meinem Kommentar zu devnull69's Antwort, hier eine Scalar-Funktion um das ganze zu kapseln:

CREATE 
FUNCTION dbo.ColumnExists(@TableName sysname, @ColumnName sysname, @TableSchema NVARCHAR(128))
RETURNS bit AS
BEGIN
return ISNULL((
SELECT TOP 1 1
FROM INFORMATION_SCHEMA.Columns
WHERE TABLE_NAME = @TableName
AND COLUMN_NAME = @ColumnName
AND (TABLE_SCHEMA = @TableSchema OR @TableSchema IS NULL)
),0)
END
GO

Beispiele:

SELECT dbo.ColumnExists('table1','Column1', null)
SELECT dbo.ColumnExists('table1','Column1', 'dbo')
22.11.2012
Floyd 14,6k 3 9
0
Einfacher (naja, zumindest intuitiver)
IF NOT EXISTS (SELECT 1 FROM information_schema.columns WHERE TABLE_NAME = 'XXX'
AND COLUMN_NAME = 'YYY' AND TABLE_SCHEMA = 'dbo')
21.11.2012
devnull69 36 1
Man könnte es auch noch in eine Scalar-Funktion packen.
Floyd 21.11.2012

Stelle deine T-sql-Frage jetzt!