希望有人可以提供幫助。我創建了兩個表Customer和Order,如下所示;插入值時外鍵約束失敗和錯誤消息
CREATE TABLE Customer
CustomerID int NOT NULL PRIMARY KEY
CustomerName varchar(25)
在客戶表中的其他列是不相關的我的問題,所以我不會把它們放在這裏。我的客戶號碼從1到15,都是唯一的。
我創建的第二個表是訂單如下
CREATE TABLE Orders
OrderID smallint NOT NULL PRIMARY KEY
OrderDate date NOT NULL
CustomerID int FOREIGN KEY REFERENCES Customer (CustomerID);
我插入值如下:
INSERT INTO Orders (OrderID, OrderDate, CustomerID)
VALUES
(1001, '2008-10-21', 1),
(1002, '2008-10-21', 8),
(1003, '2008-10-22', 15),
(1004, '2008-10-22', 5),
(1005, '2008-10-24', 3),
(1006, '2008-10-24', 2),
(1007, '2008-10-27', 11),
(1008, '2008-10-30', 12),
(1009, '2008-11-05', 4),
(1010, '2008-11-05', 1);
當我嘗試插入我的價值觀到Order表,我得到以下錯誤消息....
Msg 547,Level 16,State 0,Line 1 ..... INSERT語句衝突 w FOREIGN KEY約束「FK__OrderT__Customer__2D27B809」。 發生衝突表「dbo.Customer」,列'CustomerID'。 聲明已被終止。
我的訂單表中CustomerID的編號是(1; 1; 2; 3; 4; 5; 8; 11; 12和15)。因此我檢查了Order表中的所有CustomerID號碼都在Customer表中。
所以我的問題是
1)具有插入值失敗,因爲我的客戶表我CustomerID列在NOT NULL和錯誤,以取得客戶ID列NULL。如果對上述問題的答案是肯定的,那麼是否有可能(a)將外鍵放在Order(b)中的CustomerID列上,將列更改爲NOT NULL,然後(c)將再次將外鍵約束添加到此列,然後再次插入值?
刪除並重新創建表格Order可能更容易。但我很好奇,如果選項2將工作,重新刪除並添加一個外鍵在同一列。
希望我在正確的軌道上,爲什麼我認爲發生錯誤,感覺 糾正我,如果我錯了。
謝謝大家 喬西
什麼樣的價值是無法被插入,雖然? –
OrderT or Orders?這是一個錯字嗎? –
@Abdul - 這個表在SQL中叫做OrderT,我在這裏叫它Order,所以它是一個錯字,我指的是同一張表。 – Josie