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".
エラーは、既存のデータがテーブルに追加しようとしているチェック制約に違反していることを意味することを理解していますが、なぜですか?
また、既存のデータとチェック制約が互いに違反しないようにするにはどうすればよいですか?