2013-06-17 21 views
11

Ich habe eine Spalte in meiner DB, die derzeit als NOT NULL definiert ist. Ich möchte diese Spalte aktualisieren, um NULLs zu ermöglichen.Herausfinden, ob eine Spalte NICHT NULL ist

Ich habe das folgende Skript, um dies zu tun, aber ich möchte zuerst überprüfen, ob die Spalte bereits NULL (oder NOT NULL) ist, wie es zuvor möglicherweise geändert wurde.

ALTER TABLE [dbo].[aud] 
ALTER COLUMN [actname] nvarchar(50) NULL 

Jede Hilfe wird geschätzt.

+7

schreiben Warum Sie überprüfen wollen? Wenn die Spalte bereits nullwertfähig ist, können Sie Ihre alter-Anweisung sicher ausführen. Dies hat keine Auswirkungen, gibt aber keinen Fehler. – hvd

Antwort

9

Verwenden COLUMN Spalte Eigenschaft zu erhalten. Sie können so etwas wie

SELECT COLUMNPROPERTY(OBJECT_ID('dbo.aud'),'actname','AllowsNull') AS 'AllowsNull'; 

Für weitere Informationen besuchen Sie bitte dieses link

+1

+1 Ordentlich. Ist das effizienter als die 'sys' Tabellen? Nicht, dass Effizienz in diesem Szenario ein enormer Overhead sein wird. –

+0

Ich denke schon, obwohl ich nicht 100% sicher bin .. :) – Pawan

6
select is_nullable from sys.columns c inner join sys.tables t on 
t.object_id = c.object_id where t.name = 'aud' and c.name = 'actname' 

Werden Sie geben einen BIT darstellt, ob es NULL-Werte zulässt oder nicht.

So konnte man auf dieser wie Schalter

IF EXISTS(SELECT * from sys.columns c inner join sys.tables t on 
    t.object_id = c.object_id where t.name = 'aud' and c.name = 'actname' AND 
    is_nullable = 1) 
    BEGIN 
     --What to do if nullable 
    END 
ELSE 
    BEGIN 
     --What to do if not nullable 
    END 
END 

Das setzt natürlich voraus, dass die Tabelle und Spalte überhaupt existieren ...

3

Es ist nicht wirklich ein Bedürfnis, das zu tun, denn wenn Es ist bereits Nullable, das Ändern einer Spalte von Nullable in Nullable hat keine negativen Auswirkungen.

auch immer Sie es mit dieser Abfrage tun können:

SELECT is_nullable 
FROM sys.columns 
WHERE object_id=object_id('YourTable') AND name = 'yourColumn' 
Verwandte Themen