Sql 无法创建约束或索引

Sql 无法创建约束或索引,sql,sql-server,Sql,Sql Server,我正在运行这个SQL语句 CREATE TABLE TblPeminjaman ( KodePeminjaman varchar(4) PRIMARY KEY, KodeBuku varchar(4) NOT NULL FOREIGN KEY (KodeBuku) REFERENCES TblPeminjaman (KodePeminjaman), NIM varchar(9) NOT NULL FOREIGN KEY (NIM) REFE

我正在运行这个SQL语句

CREATE TABLE TblPeminjaman
(
    KodePeminjaman varchar(4) PRIMARY KEY,
    KodeBuku varchar(4) NOT NULL
        FOREIGN KEY (KodeBuku) REFERENCES TblPeminjaman (KodePeminjaman),
    NIM varchar(9) NOT NULL
        FOREIGN KEY (NIM) REFERENCES TblPeminjaman (KodePeminjaman),
    TglPinjam Date NOT NULL,
    TglKembali Date NOT NULL,
    Status varchar(10) NOT NULL
        CHECK (Status = 'Kembali' OR Status = 'Pinjam')
);

INSERT INTO dbo.TblPeminjaman (KodePeminjaman, KodeBuku, NIM, TglPinjam, TglKembali, Status)
VALUES ('P002', 'BU04', 182112222, '17/03/2021', '23/03/2021', 'Pinjam')
我得到了这个错误:

Msg 1753,第16级,状态0,第83行
列“TblPeminjaman.kodepminjaman”的长度或比例与外键“FK_uutblpeminjam_unim_uu208cd6fa”中引用列“TblPeminjaman.NIM”的长度或比例不同。参与外键关系的列必须以相同的长度和比例定义

Msg 1750,第16级,状态1,第83行
无法创建约束或索引。请参阅前面的错误

请帮助我

您已将列“NIM”定义为varchar(9),而表TblPeminjaman中的引用列KodePeminjaman的大小或类型不同

基于相同表/列的其他fk看起来正常,NIM列应该是varchar(4)


您有一个外键指向同一表中的列。错误告诉您这两列的长度必须相同,
varchar(4)
varchar(9)
。(我认为他们坐在同一张桌子上并不重要)谢谢你,兄弟,谢谢你,英雄
Create Table TblPeminjaman
(KodePeminjaman varchar(4) primary key,
KodeBuku varchar(4) not null Foreign Key (KodeBuku) References TblPeminjaman (KodePeminjaman),
NIM varchar(4) not null Foreign Key (NIM) References TblPeminjaman (KodePeminjaman),
TglPinjam Date not null,
TglKembali Date not null,
Status varchar(10) not null Check(Status='Kembali' OR Status='Pinjam'));