電話番号の長さを 12 に固定する制約を課そうとしていますが、コードは失敗します。
create table customer (
rollcall number CONSTRAINT rc_pk PRIMARY KEY,
fname varchar(2) not NULL,
lname varchar(2) not NULL,
phone varchar2(13) check (length(phone))=12
);
電話番号の長さを 12 に固定する制約を課そうとしていますが、コードは失敗します。
create table customer (
rollcall number CONSTRAINT rc_pk PRIMARY KEY,
fname varchar(2) not NULL,
lname varchar(2) not NULL,
phone varchar2(13) check (length(phone))=12
);
最大長を 12 に定義するだけで、はるかに簡単になります。
create table customer (
rollcall number CONSTRAINT rc_pk PRIMARY KEY,
fname varchar(2) not NULL,
lname varchar(2) not NULL,
phone varchar2(12)
);
編集:
フィールドの長さが正確に 12 文字
であることを説明するために質問が言い換えられたので、実際にはチェック制約が必要であることは明らかです。元のスニペットの問題は、閉じ括弧の配置ミスでした。次のスニペットは正しい配置を示しており、条件全体がチェック句の括弧で囲まれています。
create table customer (
rollcall number CONSTRAINT rc_pk PRIMARY KEY,
fname varchar(2) not NULL,
lname varchar(2) not NULL,
phone varchar2(12) check (length(phone) = 12) -- here
);