簡體   English   中英

違反復合鍵中的 UNIQUE KEY 約束?

[英]Violation of UNIQUE KEY constraint in a composite key?

我是 SQL 的新手,無法理解此錯誤:違反唯一鍵約束 'UQ__Flight_L__5DD08D7924EB8625'。 無法在 object 'dbo.Flight_Leg' 中插入重復鍵。 重復鍵值為 (WN380)


Create Table Flight_Leg(
    Leg_number int not null,
    Departure_airport_code varchar(3),
    Scheduled_departure_time varchar(6),
    Arrival_airport_code varchar(3),
    Scheduled_arrival_time varchar(6),

    /*The maximum number of flight legs(Leg_number in the FLIGHT_LEG) cannot exceed 4*/
    CHECK (Leg_number<=4),

    Flight_number varchar(255) not null UNIQUE FOREIGN KEY REFERENCES Flight(Flight_number),
    PRIMARY KEY (Leg_number,Flight_number),
);

INSERT INTO Flight_leg(Flight_number, Leg_number, Departure_airport_code, Scheduled_departure_time, Arrival_airport_code, Scheduled_arrival_time)
VALUES ('G4155', 1, 'SCK', '531PM', 'IWA', '814PM'),
    ('G4154', 1, 'IWA', '406PM', 'SCK', '451PM'),
    ('DL5841', 1, 'OAK', '1240PM', 'LAX', '200PM'),
    ('DL1149',1,'LAX','645PM', 'HNL', '1043PM'),
    ('HA48', 1, 'HNL', '215PM', 'OAK', '930PM'),
    ('AA1522', 1, 'SFO', '1159PM', 'ORD', '604AM'),
    ('AA3472', 1,'ORD', '719AM', 'MSN', '819AM'),
    ('WN380', 1,'MDW', '755AM', 'ONT', '1010AM'),
    ('WN380', 2, 'ONT', '1045AM', 'SMF', '1145AM'),
    ('B6624', 1, 'LAX', '915PM', 'JFK', '522AM');

在我看來,我在 flight_leg 中創建了一個復合鍵,因此 WN380 具有重復值應該不會產生此錯誤? 先感謝您!

您對 Flight 有一個唯一的約束,這是行不通的

UNIQUE FOREIGN KEY REFERENCES Flight(Flight_number)

因此,無論您的主索引是什么,都不能插入兩個相同的 Flight_Legs

制作一個普通的 NON-UNIQUE KEY REFERENCE 它將起作用:

Flight_number varchar(255) not null FOREIGN KEY REFERENCES Flight(Flight_number),

在您的航班表中,密鑰可以是 UNIQE

最好的祝福

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM