Mysql 希望SQL Server约束不允许特定字符串
我正在使用SQL Server 2017和SMMS创建一个实践数据库,它是用于记录存储的,我正在创建表艺术家,我希望有一个限制,不允许在艺术家字段中使用适度的鼠标或良好的鼠标。我们不卖这些。反正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)
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
)是值具有不同长度时更好的选择。