代码如下:
create table Person (
personId smallint not null,
title char(5) default null,
personName varchar2(50) not null,
institution varchar2(100),
country varchar2(30),
phoneNo varchar2(15),
personEmail varchar2(50),
primary key (personId),
check (title in ('Mr', 'Ms', 'Miss', 'Dr', 'Prof', null)),
check ( length(phoneNo) between ( 8 and 15)),
unique (personEmail));
Run Code Online (Sandbox Code Playgroud)
我想你有两个问题.试试这个:
create table Person (
personId smallint not null,
title char(5) default null,
personName varchar2(50) not null,
institution varchar2(100),
country varchar2(30),
phoneNo varchar2(15),
personEmail varchar2(50),
primary key (personId),
check (title in ('Mr', 'Ms', 'Miss', 'Dr', 'Prof') or title is null),
check (length(phoneNo) between 8 and 15),
unique (personEmail)
);
Run Code Online (Sandbox Code Playgroud)
语法错误是括号(8 and 15).我建议标题varchar2()不是固定长度的字符串.
另一个问题是NULL在in.
有什么问题?在大多数SQL表达式中,NULL被视为"false".例如,WHERE条款和CASE表达式中的条件都是如此. CHECK由于某种原因,约束的行为有所不同.甲NULL值传递CHECK约束.我发现这一切都令人困惑,所以我更喜欢我的CHECK约束评估为真或假.
| 归档时间: |
|
| 查看次数: |
36 次 |
| 最近记录: |