ALTER TABLE TblPersoon
ADD Geslacht char(1) NULL
CONSTRAINT CKGeslacht CHECK (Geslacht in ('M', 'V'))
当我执行此查询时,之后仍然可以插入' m'或者' v'在名为' Geslacht'在TblPersoon。 我怎样才能确保只接受大写字母?
我知道我应该可以在SQL Server Management Studio中执行此操作,但在哪里?
答案 0 :(得分:3)
您可以像这样定义显式的整理:
ALTER TABLE TblPersoon
ADD Geslacht char(1) NULL
CONSTRAINT CKGeslacht CHECK (Geslacht collate SQL_Latin1_General_CP1_CS_AS in ('M', 'V'))
但是,我使用了默认的 collation 区分大小写的类型SQL_Latin1_General_CP1_CS_AS
,您可以相应地更改它。
答案 1 :(得分:3)
您需要区分大小写的排序规则。您可以通过该方式定义列,也可以在check
约束中进行定义:
ALTER TABLE TblPersoon
ADD Geslacht char(1) NULL
CONSTRAINT CKGeslacht CHECK (Geslacht collate Latin1_General_CS_AS in ('M', 'V'));
或:
ALTER TABLE TblPersoon
ADD Geslacht char(1) collate Latin1_General_CS_AS
CONSTRAINT CKGeslacht CHECK (Geslacht in ('M', 'V'));
整理通常是一个棘手的主题。它涉及不同角色之间的关系。在SQL Server中,它似乎也与字符集混合在一起("代码页")。我做了哪些基本的事情,如区分大小写和不区分大小写的比较不需要使用它们。您可以在documentation中了解有关它的更多信息。