Mysql 希望SQL Server约束不允许特定字符串

Mysql 希望SQL Server约束不允许特定字符串,mysql,sql,Mysql,Sql,我正在使用SQL Server 2017和SMMS创建一个实践数据库,它是用于记录存储的,我正在创建表艺术家,我希望有一个限制,不允许在艺术家字段中使用适度的鼠标或良好的鼠标。我们不卖这些。反正 CREATE TABLE ARTIST ( ArtistID Int NOT NULL IDENTITY(1,1), ArtistName Char(30) NOT NULL, Genre Char(15)

我正在使用SQL Server 2017和SMMS创建一个实践数据库,它是用于记录存储的,我正在创建表艺术家,我希望有一个限制,不允许在艺术家字段中使用适度的鼠标或良好的鼠标。我们不卖这些。反正

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')
);
不用说,这是行不通的


有什么想法吗?

应该是这样的:

CONSTRAINT CheckCertainArtists CHECK (
  ArtistName <> 'Modest Mouse' AND ArtistName <> 'Good Charlotte'
)
约束检查某些艺术家检查(
艺人名称“谦逊的老鼠”和艺人名称“善良的夏洛特”
)

您的描述提出了一个简单的
检查约束:

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

然而,我发现这是一个奇怪的限制。还有无数其他的名字,其中许多可能是你不卖的艺术家(或者根本不是艺术家)。现在还不清楚你为什么要停在这两个地方。也许您希望只包括您销售的艺术家。

使用检查约束,如下所示:

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

我的想法。。。这个问题应该标记为[sql server],而不是标记为[mysql](很明显,这个问题涉及的是Microsoft SQL Server,而不是MySQL。这是两个截然不同的关系数据库管理系统。您可能希望重新访问您的数据类型。
char
是一个很好的选择,其中所有值都将是您指定的精确长度。
varchar
(或
nvarchar
)是值具有不同长度时更好的选择。