ХОЧЕТ, чтобы SQL Server CONSTRAINT НЕ разрешал определенную строку - PullRequest
0 голосов
/ 04 мая 2018

Я создаю учебную базу данных с использованием SQL Server 2017 и SMMS, она предназначена для хранилища записей, я создаю таблицу ARTISTS и хочу, чтобы параметр CONSTRAINT НЕ позволял Modest Mouse или Good Charlotte в поле ARTIST. Мы не продаем их. Во всяком случае,

CREATE TABLE ARTIST (
  ArtistID       Int     NOT NULL IDENTITY(1,1),
  ArtistName     Char(30)               NOT NULL,
  Genre          Char(15)               NOT NULL,
  CONSTRAINT     ArtistPK               PRIMARY KEY(ArtistID),
  CONSTRAINT     CheckCertainArtists    CHECK ([ArtistName] NOT 'Modest Mouse' OR 'Good Charlotte')
);

Излишне говорить, что это не сработало.

Есть мысли?

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

Ваше описание предлагает простое ограничение CHECK:

CONSTRAINT chk_artist_artistname
    CHECK (ArtistName NOT IN ('Modest Mouse' , 'Good Charlotte'));

Однако я считаю это любопытным ограничением. Есть миллионы других имен, многие из которых могут быть художниками, которых вы не продаете (или даже не художниками вообще). Неясно, почему вы останавливаетесь на этих двух. Возможно, вы хотите включить только художников, которых вы продаете.

0 голосов
/ 04 мая 2018

Используйте ограничение CHECK следующим образом:

CONSTRAINT chkArtistArtistname
CHECK (ArtistName NOT IN ('Modest Mouse' , 'Good Charlotte'));
0 голосов
/ 04 мая 2018

Разве это не должно быть что-то вроде:

CONSTRAINT CheckCertainArtists CHECK (
  ArtistName <> 'Modest Mouse' AND ArtistName <> 'Good Charlotte'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...