房地产代理的Oracle DB示例
我试图为一个关于房地产代理的项目建立一个样本数据库,在关于房地产的表格上,我有一个列Realtie_id,我希望它以11%%%开始,它应该是什么类型(int或varchar)以及如何进行约束房地产代理的Oracle DB示例,oracle,oracle-sqldeveloper,check-constraints,Oracle,Oracle Sqldeveloper,Check Constraints,我试图为一个关于房地产代理的项目建立一个样本数据库,在关于房地产的表格上,我有一个列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), constrain
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>
如果您的值是数字,则将列设置为数字数据类型。例外情况是,当您的值是一个可以以零开头的数字字符串(如电话号码)时,它应该是一个字符串数据类型;否则,如果使用数字数据类型,则在语义上重要的前导零将被去除。由于您希望数字以
11
开头,因此此警告不适用
至于检查
约束,您可以使用如“11%”
,Oracle将隐式地将其转换为字符串以执行检查
创建表不动产(
rid int
非空
约束不动产\u_rid\u_pk主键
约束不动产\uuuuu rid\uuuu chk检查(像'11%'一样的rid),
地址:varchar(50),
m2真实
不为空,
r_型varchar(20)
);
正如其他人所说,如果它是一个字符串,请将其设置为varchar2。如果它是一个真正的数字,就把它变成数字。我要提醒的是,按照惯例,如果它只使用数字字符,那么它不一定是数字。只有当在数学运算中使用它有意义时,它才是一个数字。想想电话号码,美国社会保险号码,信用卡号码。它们都是数字字符,但当它们被设计时,约定也可以是字母。你永远不会添加它们。它们不是数字。