注册 登录
编程论坛 Oracle论坛

请问:这两种check约束有什么不同,为什么我产生的错误结果是一样的?谢谢!

Grace_TT 发布于 2006-02-22 21:24, 1427 次点击

就是我创建了一个表teacher2:
第一次:
create table teacher2
(teacherid char(2) not null primary key,
teachername char(30) not null,
address char(30),
phone char(7) check(phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'));

第二次:
create table teacher2
(teacherid char(2) not null primary key,
teachername char(30) not null,
address char(30),
phone char(7) check(phone like '[0-9]'));

然后:我分别往这两次建的表中插入数据:
insert into teacher2 values('01','Tom','YanTai','1234Ab7');

结果产生的错误信息是一样的:
第一次:
insert into teacher2 values('01','Tom','YanTai','1234Ab7')
*
ERROR 位于第 1 行:
ORA-02290: 违反检查约束条件 (GRACE.SYS_C003050)

第二次:
insert into teacher2 values('01','Tom','YanTai','1234Ab7')
*
ERROR 位于第 1 行:
ORA-02290: 违反检查约束条件 (GRACE.SYS_C003054)


我想知道,这两种check约束有什么不同,怎么验证它们的不同:
phone char(7) check(phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'));
phone char(7) check(phone like '[0-9]'));

谢谢各位了!!
5 回复
#2
zorro2zzz2006-02-23 01:05
第一个约束是电话号码为7位数且均为数字
第二个................1......为数字
就这样……
你可以自己试试……
#3
Grace_TT2006-02-23 05:59
可是,我用第二种方法后,要如何往表中插入数据才不会出现错误呢?
谢谢!
#4
Grace_TT2006-02-23 06:31

奇怪啊!为什么我用第一种方式建的表:
create table teacher2
(teacherid char(2) not null primary key,
teachername char(30) not null,
address char(30),
phone char(7) check(phone like '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]'));

插入数据:
insert into teacher2 values('01','Tom','YanTai','6564678');

仍然产生错误呢??到底是哪里的问题呀??

#5
zorro2zzz2006-02-23 12:23
两种方法都是违反的约束条件,我试过,符合约束条件的数据是可以插入的……
不知道是哪里有问题……
#6
Grace_TT2006-02-23 13:59
以下是引用zorro2zzz在2006-2-23 12:23:00的发言:
两种方法都是违反的约束条件,我试过,符合约束条件的数据是可以插入的……
不知道是哪里有问题……

符合约束条件的数据是可以插入的……
-----------------------你的意思是你插入进去了?

1