Вместо того, чтобы сделать столбец NOT NULL (который не будет работать), вы можете добавить проверочное ограничение, которое гарантирует, что значение не равно NULL, а затем применить проверочное ограничение с параметром NOCHECK.Вот пример:
USE tempdb;
GO
DROP TABLE IF EXISTS dbo.Test;
CREATE TABLE dbo.Test
(
TestID int IDENTITY(1,1) NOT NULL
CONSTRAINT PK_dbo_Test PRIMARY KEY,
TestName varchar(50) NULL
);
GO
INSERT dbo.Test (TestName)
VALUES ('Fred'), (NULL), ('Mary');
GO
ALTER TABLE dbo.Test
WITH NOCHECK ADD CONSTRAINT CK_dbo_Test_TestName_not_null
CHECK (TestName IS NOT NULL);
GO
-- OK
INSERT dbo.Test (TestName)
VALUES ('Mia');
GO
-- Not OK
INSERT dbo.Test (TestName)
VALUES (NULL);
GO