2016-11-27 80 views
0

我正在使用SQL Server 2014創建數據並將數據插入到表中,並且在填充具有外鍵約束的表時存在問題。我有一個表user和一個表city這是事先創建的。T-SQL將數據插入帶有外鍵的表中

我使用的代碼來改變user表以包括從表city與該碼的cityId外鍵:

ALTER TABLE [Schema].[user] 
    ADD cityId UNIQUEIDENTIFIER NOT NULL    
    CONSTRAINT usr_cid_fk 
    FOREIGN KEY (cityId) REFERENCES [Schema].[city] (cityId); 
GO 

基本上我通過添加稱爲cityId字段,它我提出外鍵改性的用戶表。現在的問題是,插入數據時,在第一行

INSERT INTO [Schema].[user](name, surname, dob, gender, ..) 

cityId無法找到映射。不知道爲什麼它沒有顯示。在設計視圖中,它被列爲外鍵,因此應該沒有問題。

非常感謝

+0

「City」表是空的嗎? – Sami

+0

城市充滿了一些數據,併成功 –

+0

檢查城市id的類型更改說明 - 「數字不爲空」 – Sami

回答

0

嘗試:

ALTER TABLE [Schema].[user] 
ADD cityId NUMBER NOT NULL   
CONSTRAINT usr_cid_fk 
FOREIGN KEY (cityId) REFERENCES [Schema].[city] (cityId); 

注:

ADD cityId UNIQUEIDENTIFIER NOT NULL

SQL標準,一個外鍵必須引用無論是主鍵或父表的唯一鍵。如果主鍵具有多列,則外鍵必須具有相同的列號和順序。因此,外鍵引用了父表中的唯一行;不能有重複。

+0

大氣壓我有 CREATE TABLE [架構] [城市]( \t cityId UNIQUEIDENTIFIER \t \t \t約束cty_pk PRIMARY KEY \t \t \t DEFAULT NEWID()\t \t \t \t \t \t \t \t - GUID - 全球唯一標識符 \t,cityName NVARCHAR(256)NOT NULL \t \t CONSTRAINT cty_cn_un UNIQUE \t \t \t \t \t \t ); 所以我必須使城市的id作爲數字數據類型我也猜對了嗎? –

+0

標識字段應該是數字 – Sami