SQL Server 2017中创建约束禁止特定艺术家名称入库
解决SQL Server中CHECK约束禁止特定艺人名称的语法问题
我明白你在搭建唱片店练习数据库(用SQL Server 2017和SSMS)时,想要给ARTISTS表加个约束,禁止出现"Modest Mouse"和"Good Charlotte"这两个艺人的名称,但原来的CHECK约束写得有语法问题。没问题,这就给你正确的写法,顺便解释下关键点:
正确的CREATE TABLE语句
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 IN ('Modest Mouse', 'Good Charlotte')) );
关键说明
- 这里用
NOT IN操作符精准排除了指定的两个艺人名称,完美实现你"本店不出售这些艺人唱片"的需求。 - 给字段名
ArtistName加上方括号[]是个稳妥的习惯,能避免字段名和SQL关键字冲突(哪怕这个字段名不是关键字,也建议这么做)。 - 约束名
CheckCertainArtists起得很直观,一眼就能知道这个约束的作用,方便后续维护。
如果之后需要添加更多要排除的艺人,只需要在NOT IN的括号里继续追加名称就行,比如NOT IN ('Modest Mouse', 'Good Charlotte', 'Another Artist')。
内容的提问来源于stack exchange,提问作者indy1172
相关产品推荐
相关产品推荐

