Sql server 2012 在SQL Server中添加仅大写字母约束
我希望Sql server 2012 在SQL Server中添加仅大写字母约束,sql-server-2012,Sql Server 2012,我希望Position只接受大写字母。要添加哪个约束 create table EmployeeStatistics ( EmployeeIdNo int, Name varchar(30), Salary integer, Benefits integer, Position varchar(25), Allowance integer, DateOfBirth integer,
Position
只接受大写字母。要添加哪个约束
create table EmployeeStatistics
(
EmployeeIdNo int,
Name varchar(30),
Salary integer,
Benefits integer,
Position varchar(25),
Allowance integer,
DateOfBirth integer,
Telephone integer,
primary key (EmployeeIdNo)
);
实际上,我不会添加一个仅接受大写的约束,而是研究一个简单的触发器来强制它使用大写 当数据库用户输入小写字母时,如果可以很容易地修复而不丢失信息,那么就没有什么必要去烦扰他们。有些人不喜欢对数据进行无声的更改,但我一直认为,如果这种行为得到了很好的宣传,那么最好不要产生不必要的错误 这将是类似于:
alter table EmployeeStatistics
#add constraint
要创建触发器和一次性触发器,请执行以下操作:
CREATE TRIGGER UpperPosition ON EmployeeStatistics
FOR INSERT, UPDATE AS
UPDATE T SET T.Position=Upper(T.Position)
FROM EmployeeStatistics T
INNER JOIN inserted I ON (T.ID = I.ID)
更改所有当前行
如果您有任何使用该列的外键约束,请小心,将其大写可能会破坏约束。您可以使用检查约束,将值与使用二进制排序规则或区分大小写排序规则的值进行比较
UPDATE EmployeeStatistics
SET Position = Upper(Position)
@Farhaan这是强制它使用大写的代码。两个例子都有。你为什么不接受这些完美的答案呢?因为你特别要求一个约束——这是公认的答案。尽管下面的回答中提出的观点可能是一个合理的担忧。这两个答案都很好。
alter table dbo.EmployeeStatistics
add constraint CK_EmployeeStatistics_Position
check (upper(Position) = Position collate Latin1_General_BIN2)