用于房地产代理的示例 Oracle DB
Sample Oracle DB for Real Estate Agency
我正在尝试为一个关于房地产代理的项目构建一个示例数据库,在关于房地产的 table 上,我有一列 Realtie_id,我希望它以 11%% 开头% 它应该是什么类型(int 或 varchar )以及如何进行约束?
create table Realties (
rid int not null,
address varchar(50),
m2 real not null,
r_type varchar(20),
primary key (rid),
constraint c_rid check(rid in (.....
);
这取决于您要在其中存储什么。
- 如果是字符串,使用
VARCHAR2
- 如果是数字,使用
NUMBER
(或INT
)
约束在任何情况下都可能是
SQL> create table realties
2 (rid int constraint ch_rid check (substr(to_char(rid), 1, 2) = '11'));
Table created.
SQL> insert into realties (rid) values ('abc');
insert into realties (rid) values ('abc')
*
ERROR at line 1:
ORA-01722: invalid number
SQL> insert into realties (rid) values ('245');
insert into realties (rid) values ('245')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_RID) violated
SQL> insert into realties (rid) values ('1245');
insert into realties (rid) values ('1245')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_RID) violated
SQL> insert into realties (rid) values ('11245');
1 row created.
SQL>
如果您的值为数字,则将该列设为数字数据类型。例外情况是当您的值是可以以零开头的数字字符串时,例如 phone 数字,而它应该是字符串数据类型;否则,如果您使用数字数据类型,那么语义上重要的前导零将被删除。由于您希望数字以 11
开头,因此此警告不适用。
至于CHECK
约束,可以使用LIKE '11%'
,Oracle会隐式将其转换为字符串进行校验。
create table Realties (
rid int
not null
CONSTRAINT realties__rid__pk PRIMARY KEY
CONSTRAINT realties__rid__chk CHECK ( rid LIKE '11%' ),
address varchar(50),
m2 real
not null,
r_type varchar(20)
);
我正在尝试为一个关于房地产代理的项目构建一个示例数据库,在关于房地产的 table 上,我有一列 Realtie_id,我希望它以 11%% 开头% 它应该是什么类型(int 或 varchar )以及如何进行约束?
create table Realties (
rid int not null,
address varchar(50),
m2 real not null,
r_type varchar(20),
primary key (rid),
constraint c_rid check(rid in (.....
);
这取决于您要在其中存储什么。
- 如果是字符串,使用
VARCHAR2
- 如果是数字,使用
NUMBER
(或INT
)
约束在任何情况下都可能是
SQL> create table realties
2 (rid int constraint ch_rid check (substr(to_char(rid), 1, 2) = '11'));
Table created.
SQL> insert into realties (rid) values ('abc');
insert into realties (rid) values ('abc')
*
ERROR at line 1:
ORA-01722: invalid number
SQL> insert into realties (rid) values ('245');
insert into realties (rid) values ('245')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_RID) violated
SQL> insert into realties (rid) values ('1245');
insert into realties (rid) values ('1245')
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.CH_RID) violated
SQL> insert into realties (rid) values ('11245');
1 row created.
SQL>
如果您的值为数字,则将该列设为数字数据类型。例外情况是当您的值是可以以零开头的数字字符串时,例如 phone 数字,而它应该是字符串数据类型;否则,如果您使用数字数据类型,那么语义上重要的前导零将被删除。由于您希望数字以 11
开头,因此此警告不适用。
至于CHECK
约束,可以使用LIKE '11%'
,Oracle会隐式将其转换为字符串进行校验。
create table Realties (
rid int
not null
CONSTRAINT realties__rid__pk PRIMARY KEY
CONSTRAINT realties__rid__chk CHECK ( rid LIKE '11%' ),
address varchar(50),
m2 real
not null,
r_type varchar(20)
);