制約条件では、全体の名前と大文字の第2文字の大文字とを比較しています。 third argumentsubstring_length
を1に指定しているため、1文字しか表示されません。最後の2文字を確認する必要があります。あなたが大文字で同じ2つの文字でのみを比較する必要があります:あなたが追加しようとしている制約を満たしていないデータを既存しているので、
substr(nume_client, -2) = upper(substr(nume_client, -2))
あなたが取得しているエラーです。これは、元のバージョンで常にfalseを返すため、制約が意図したとおりに行われていない可能性があります。
変更したチェック、あなたはデータが制約を追加、またはthe novalidate
clauseを使用する前にすることを削除する必要があるか、正しいのいずれかで同じエラーが出た場合:
check (substr(nume_client, -2) = upper(substr(nume_client, -2))) novalidate
既存の制約違反の行はそのまま残りますただし、制約に違反する新しい行を追加することや、既存の行を無効な値に更新することはできません。
alter table modify (column...)
の構文を使用するか、より単純な構文のGordon Linoffが使用できます。彼らは最終的に同じことをする。
'substr(nume_client、-2、1)= upper(substr(nume_client、-2、1))'? – jarlh