我创建了一个名为test
列的表,名为code
:
create table test(
code char(3) not null);
然后我用以下数据填充了表格:
insert into test values ('A12');
insert into test values ('B23');
insert into test values ('C45');
然后我更改了该列以使其成为 char(4):
alter table test
alter column code char(4) not null;
然后,我在所有现有数据中添加了一个“X”,使其变为 4 个字符长:
update test
set code='X'+code
where LEN(code)=3;
到目前为止一切都很好,但是当我尝试添加检查约束时:
alter table test
add constraint codeCheck check (code like 'A-Z''A-Z''0-9''0-9');
我收到了这个错误:
The ALTER TABLE statement conflicted with the CHECK constraint "codeCheck".
我了解该错误意味着现有数据违反了我尝试添加到表中的检查约束,但为什么呢?
以及如何使现有数据和检查约束不相互冲突?