SQL Server, проверьте ограничение на обнуляемость нескольких столбцов - PullRequest
2 голосов
/ 23 марта 2019

В SQL Server есть столбцы column a и column b. Только если значение для column a присутствует, column b не должно быть нулевым. Можете ли вы сделать это до вставки значений, которые находятся в сценариях создания, и как мы можем это сделать?

Ответы [ 2 ]

0 голосов
/ 23 марта 2019

Да, это возможно, используя проверить ограничения

попробуйте это -

create table myTable (ID int identity(1,1)
                        , a int
                        , b int 
                        )
go

ALTER TABLE myTable 
ADD CONSTRAINT ck_BNotNull 
CHECK ( 
        (A is not null and b is not null) 
        or  (A is null)

        )

   go

- Недопустимо

  insert into myTable
   (a,b)
   values
   (1,null)

- разрешено

insert into myTable
   (a,b)
   values
   (null,null)

- разрешено

 insert into myTable
   (a,b)
   values
   (null,1)
0 голосов
/ 23 марта 2019

Использование такого ограничения CHECK:

USE tempdb;
CREATE TABLE test
(
    col1 INT,
    col2 INT
);

ALTER TABLE test
ADD CONSTRAINT ck_combined CHECK 
(
    (
        col1 IS NOT NULL
        AND col2 IS NOT NULL
    )
    OR (col1 IS NULL)
);

-- (1 row affected)
INSERT INTO test VALUES (NULL, NULL);

--Msg 547, Level 16, State 0, Line 10
--The INSERT statement conflicted with the CHECK constraint "ck_combined". The conflict occurred in database "tempdb", table "dbo.test".
INSERT INTO test VALUES (1, NULL);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...