Ответ 1
Используйте COLUMNPROPERTY, чтобы получить свойство столбца. Вы можете написать что-то вроде
SELECT COLUMNPROPERTY(OBJECT_ID('dbo.aud'),'actname','AllowsNull') AS 'AllowsNull';
Для получения дополнительной информации посетите ссылку
У меня есть столбец в моей БД, который в настоящее время определяется как NOT NULL
.
Я хотел бы обновить этот столбец, чтобы разрешить NULLs
.
У меня есть следующий script, чтобы сделать это, но сначала хочу проверить, если столбец уже NULL
(или NOT NULL
), поскольку он, возможно, ранее был изменен.
ALTER TABLE [dbo].[aud]
ALTER COLUMN [actname] nvarchar(50) NULL
Любая помощь была оценена.
Используйте COLUMNPROPERTY, чтобы получить свойство столбца. Вы можете написать что-то вроде
SELECT COLUMNPROPERTY(OBJECT_ID('dbo.aud'),'actname','AllowsNull') AS 'AllowsNull';
Для получения дополнительной информации посетите ссылку
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'
Дает вам BIT
, представляющий, является ли он нулевым или нет.
Итак, вы можете включить это как
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
Это, конечно, предполагает, что таблица и столбец существуют вообще...
Нет необходимости делать это, потому что если он уже Nullable, изменение столбца от Nullable до Nullable не будет иметь отрицательного эффекта.
Однако вы можете сделать это с помощью этого запроса:
SELECT is_nullable
FROM sys.columns
WHERE object_id=object_id('YourTable') AND name = 'yourColumn'