请问为什么这样建表后输入数据显示错误,软件版本为SQL server 2018

  1. create table 商品订货单(
    订单编号 char(4) not null,
    客户编号 char(4),
    订货单位 varchar(30),
    订货金额 numeric(18,2),
    订货日期 datetime,
    交货期限 datetime,
    订货人 varchar(10),
    是否处理 bit
    )
    go
    alter table 商品订货单
    add constraint PK_商品订货单
    primary key(订单编号)
    go
    Alter table 商品订货单 
    add constraint CK_商品订货单_订单编号 
    check([订单编号]like'[0-9][0-9][0-9][0-9]')
    go
    Alter table 商品订货单 
    add constraint CK_商品订货单_客户编号 
    check([客户编号]like'[0-9][0-9][0-9][0-9]')
    go
    Alter table 商品订货单 
    add constraint CK_商品订货单_交货期限 check(订单编号>订货日期)
    go
    Alter table 商品订货单 
    add constraint DF_商品订货单_订货金额 default 0.00 for 订货金额
    go
    Alter table 商品订货单 
    add constraint DF_商品订货单_订货日期 default getdate() for 订货日期
    go
    Alter table 商品订货单 
    add constraint DF_商品订货单_是否处理 default 0 for 是否处理
  2. create table 订单明细(
    订单编号 char(4) not null,
    序号 smallint not null,
    商品编号 char(4) not null,
    商品名称 varchar(30),
    商品型号 varchar(30),
    数量 tinyint,
    单价 numeric(18,2),
    单位 nchar(1),
    小计 as 数量*单价)
    go
    alter table 订单明细
    add constraint PK_订单明细
    primary key (序号,商品编号)
    go
    Alter table 订单明细 
    add constraint CK_订单明细_商品编号 
    check([商品编号]like'[0-9][0-9][0-9][0-9]')
    go
    Alter table 订单明细
    add constraint FK_订单明细_商品订货单
    foreign key(订单编号) references 商品订货单(订单编号)
    on delete cascade on update cascade
  3. insert 商品订货单(订单编号,客户编号,订货单位,交货期限,订货人)
           Values('1001','1001','驻马店市蓝星商贸有限公司','20110901','张军建'),
    	         ('1002','1002','河南利友软件公司','20110825','田超')
    go
    insert 订单明细(订单编号,序号,商品编号,商品名称,商品型号,数量,单价,单位)
           Values('1001',1,'1101','计算机','V470ca',5,8000.00,'台'),
    	         ('1001',2,'1102','计算机','V471a',5,5000.00,'台')
    Update 商品订货单 Set 订货金额=75000.00 Where 订单编号='1001'
    insert 订单明细(订单编号,序号,商品编号,商品名称,商品型号,数量,单价,单位)
           Values('1002',1,'1103','计算机','V470ca',5,9000.00,'台')
    Update 商品订货单 Set 订货金额=45000.00 Where 订单编号='1002'

 

 

 

 

其实就是第一个 insert 语句有问题,导致商品表插曲失败了,所以后面的两条语句外键约束自然也失败了。 类型转换失败那个,你用-分隔一下就好了。例如 2011-08-25

错误信息说得比较明确了。第一个是字符到日期型转换数据超出范围。具体检查一下数据。

后面量个错误是FK约束。要先查如PK表再查FK表。

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632