You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建TblPeminjaman表时出现约束/索引创建失败错误(Msg 1753、Msg 1750)求助

解决SQL外键约束创建错误(Msg 1753 & Msg 1750)

看起来你这两个错误都是外键配置出了问题,我帮你拆解并修正:

错误根源分析

  1. Msg 1753(字段长度不匹配):你把NIM字段(定义为varchar(9))的外键关联到了当前表的KodePeminjaman(varchar(4)),SQL Server要求外键和它引用的字段必须有完全一致的数据类型、长度和精度,这种长度差异直接触发了报错。
  2. Msg 1750(约束创建失败):这是第一个错误引发的连锁反应——因为外键配置本身存在逻辑问题,所以整个约束无法被创建。
  3. 最核心的逻辑错误:你的外键引用方向完全错了!KodeBuku应该关联到书籍表(比如TblBuku)的KodeBuku字段,NIM应该关联到学生表(比如TblMahasiswa)的NIM字段,而不是都指向当前的借阅表。

修正后的SQL代码

首先是修正后的建表语句(假设你已经创建了TblBuku和TblMahasiswa这两个基础表,且它们的KodeBuku为varchar(4)、NIM为varchar(9)):

CREATE TABLE TblPeminjaman ( 
    KodePeminjaman varchar(4) PRIMARY KEY, 
    KodeBuku varchar(4) NOT NULL,
    NIM varchar(9) NOT NULL,
    TglPinjam Date NOT NULL, 
    TglKembali Date NOT NULL, 
    Status varchar(10) NOT NULL CHECK (Status IN ('Kembali', 'Pinjam')),
    -- 正确配置外键关联到对应的基础表
    FOREIGN KEY (KodeBuku) REFERENCES TblBuku (KodeBuku),
    FOREIGN KEY (NIM) REFERENCES TblMahasiswa (NIM)
); 

然后是插入语句,注意NIM是字符串类型,值需要加单引号,同时日期用标准的YYYY-MM-DD格式避免解析问题:

INSERT INTO dbo.TblPeminjaman 
(KodePeminjaman, KodeBuku, NIM, TglPinjam, TglKembali, Status) 
VALUES ('P002', 'BU04', '182112222', '2021-03-17', '2021-03-23', 'Pinjam')

额外注意事项

  • 确保TblBuku和TblMahasiswa已经提前创建,并且它们的对应字段(KodeBuku、NIM)的数据类型和长度和TblPeminjaman中的完全一致。
  • 日期格式尽量使用YYYY-MM-DD,这是SQL Server的标准日期格式,不会因为数据库的区域设置出现解析错误。
  • 插入字符串类型的字段时,一定要记得加单引号,否则会被当作数字处理,可能引发隐式转换或类型不匹配的问题。

内容的提问来源于stack exchange,提问作者Yourname

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 13:22:36