SQL一些语句冲突的问题,希望能被解决 谢谢。

CREATETABLES(学号Char(6)NOTNULLCONSTRAINTDF_Table_1_StudentnoDEFAULT('J0400'),姓名Char(8)... CREATE TABLE S(
学号 Char(6) NOT NULL CONSTRAINT DF_Table_1_Studentno DEFAULT ('J0400') ,
姓名 Char(8) NOT NULL,
性别 Char(2) NOT NULL ,
出生日期 Datetime NOT NULL CONSTRAINT DF_S_出生日期 DEFAULT ('1980-01-01'),
系 Varchar(20) NOT NULL,
电话 Char(8) NULL ,
CONSTRAINT CK_S CHECK (学号 LIKE'[A-Z] [0-9] [0-9] [0-9] [0-9]'),
CONSTRAINT CK_Sex CHECK (性别='女' OR 性别='男'),
CONSTRAINT CK_TEL CHECK (电话 LIKE'[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'),
CONSTRAINT PK_S PRIMARY KEY CLUSTERED(学号 ASC)
)ON [PRIMARY]
GO
INSERT INTO S( 学号,姓名,性别,出生日期,系,电话)
VALUES ('J0401','李丽','女','1980-02-12','管理信息系','931-1234')
GO
SELECT*FROM S

为什么结果是 消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束"CK_S"冲突。该冲突发生于数据库"student1416",表"dbo.S", column '学号'。
语句已终止
展开
 我来答
545624
2012-10-12 · TA获得超过374个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:135万
展开全部
测试了你的代码,发现在CONSTRAINT CK_S CHECK (学号 LIKE'[A-Z] [0-9] [0-9] [0-9] [0-9]')的约束定义中[A-Z]和[0-9]等之间都有空格,造成J0401数据违反了这个约束。请你检查一下。

把你的代码修改后如下:
CREATE TABLE S(
学号 Char(6) NOT NULL CONSTRAINT DF_Table_1_Studentno DEFAULT ('J0400') ,
姓名 Char(8) NOT NULL,
性别 Char(2) NOT NULL ,
出生日期 Datetime NOT NULL CONSTRAINT DF_S_出生日期 DEFAULT ('1980-01-01'),
系 Varchar(20) NOT NULL,
电话 Char(8) NULL ,
CONSTRAINT CK_S CHECK (学号 LIKE'[A-Z][0-9][0-9][0-9][0-9]'),
CONSTRAINT CK_Sex CHECK (性别='女' OR 性别='男'),
CONSTRAINT CK_TEL CHECK (电话 LIKE'[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'),
CONSTRAINT PK_S PRIMARY KEY CLUSTERED(学号 ASC))
ON [PRIMARY]
GO
INSERT INTO S( 学号,姓名,性别,出生日期,系,电话)
VALUES ('J0401','李丽','女','1980-02-12','管理信息系','931-1234')
GO
浩然之言
2012-10-11 · TA获得超过355个赞
知道小有建树答主
回答量:209
采纳率:0%
帮助的人:137万
展开全部
CONSTRAINT CK_S CHECK (学号 LIKE'[A-Z] [0-9] [0-9] [0-9] [0-9]'),

你这句里面中的“LIKE'[A-Z] [0-9] [0-9] [0-9] [0-9]'”有空格,把'[A-Z] [0-9] [0-9] [0-9] [0-9]'中的空格去掉

下面正确:
CREATE TABLE S(
学号 Char(6) NOT NULL CONSTRAINT DF_Table_1_Studentno DEFAULT ('J0400') ,
姓名 Char(8) NOT NULL,
性别 Char(2) NOT NULL ,
出生日期 Datetime NOT NULL CONSTRAINT DF_S_出生日期 DEFAULT ('1980-01-01'),
系 Varchar(20) NOT NULL,
电话 Char(8) NULL ,
CONSTRAINT CK_S CHECK (学号 LIKE '[A-Z][0-9][0-9][0-9][0-9]'),
CONSTRAINT CK_Sex CHECK (性别='女' OR 性别='男'),
CONSTRAINT CK_TEL CHECK (电话 LIKE '[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'),
CONSTRAINT PK_S PRIMARY KEY CLUSTERED(学号 ASC)
)ON [PRIMARY]
GO
INSERT INTO S( 学号,姓名,性别,出生日期,系,电话)
VALUES ('J0401','李丽','女','1980-02-12','管理信息系','931-1234')
GO
SELECT*FROM S
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
随o天
2012-10-12 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2025万
展开全部
'[A-Z] [0-9] [0-9] [0-9] [0-9]')和'[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]'是正则表达式。正则表达式要用Regexp前缀的函数,这里不能使用like,而要用regexp_like。上面的句子写成如下形式:
CONSTRAINT CK_S CHECK (regexp_like(学号,'[A-Z] [0-9] {4}'))
CONSTRAINT CK_TEL CHECK (regexp_like(电话,'[0-9]{7}'))
另外,创建各种对象时,名称最好不要使用中文。有些个别地方汉化不彻底会出错的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式