1

電話番号の長さを 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 
);
4

1 に答える 1

2

最大長を 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
);
于 2015-09-07T18:58:36.750 に答える