2017-12-05 1 views
-1

existiert i eine neue Spalte in der Datenbank einzufügen bin versucht, wenn es nicht früher eingeführt wird meine Spalte sieht wie folgt ausSpalte einfügen, wenn es nicht

ALTER TABLE dbo.tSafeUnit ADD HasAccess24_7 tinyint not null default 0 

i die Spalte wollen nur eingefügt werden wenn es nicht in der Tabelle

meine Codezeile fügt es nur aber nicht überprüfen, ob es

existiert
+3

Welches [DBMS] (https://en.wikipedia.org/wiki/DBMS) Produkt verwenden Sie? "SQL" ist nur eine Abfragesprache, nicht der Name eines bestimmten Datenbankprodukts. –

+0

Das Einfügen von Zeilen erfolgt über 'insert' ** nicht ** über' ALTER TABLE' –

+0

mein Fehler, ich versuche eine neue Spalte einzufügen –

Antwort

1

Versuchen Sie folgendes:

IF (SELECT COUNT(*) FROM syscolumns WHERE name = 'HasAccess24_7' 
AND OBJECT_NAME(object_id) = 'tSafeUnit') = 0 
BEGIN 
    ALTER TABLE dbo.tSafeUnit ADD HasAccess24_7 tinyint not null default 0 
END 
+1

Bitte beachten Sie, dass syscolumns seit geraumer Zeit zugunsten von sys.columns veraltet ist. https://docs.microsoft.com/en-us/sql/relational-databases/system-compatibility-views/sys-syscolumns-transact-sql –

+0

Und mit 'IF EXISTS (...)' anstelle von 'SELECT COUNT (*) 'wäre auch ratsam –

0

wenn Sie MS SQL Server verwenden, dann können Sie es wie unten tun:

IF COL_LENGTH('tSafeUnit', 'HasAccess24_7') IS NULL 
BEGIN 
    ALTER TABLE dbo.tSafeUnit 
    ADD HasAccess24_7 tinyint not null default 0 
END 
2

Sie können dies versuchen.

IF NOT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME = 'HasAccess24_7' AND TABLE_NAME = 'tSafeUnit') 
    AND EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'tSafeUnit') 
BEGIN 
    ALTER TABLE dbo.tSafeUnit ADD HasAccess24_7 TINYINT NOT NULL DEFAULT 0 
END 
Verwandte Themen