2017-06-28 37 views
0
CREATE TABLE example 
(
ycode char(5) NOT NULL, 
xcode char(10) NOT NULL, 
CONSTRAINT PK_EXAMPLE PRIMARY KEY (ycode,xcode), 
CONSTRAINT FK_EXAMPLE_Y FOREIGN KEY (ycode) REFERENCES ycode(ycode), 
CONSTRAINT FK_EXAMPLE_X FOREIGN KEY (xcode) REFERENCES xcode(xcode), 
); 

這是我正在使用的腳本。由錯誤跟進未能在SQL中創建表格

Server: Msg 1776, Level 16, State 1, Line 1 
There are no primary or candidate keys in the referenced table 'xcode' 
that match the referencing column list in the foreign key 'FK_EXAMPLE_X'. 
Server: Msg 1750, Level 16, State 1, Line 1 
Could not create constraint. See previous errors. 

我的X表有5個字段,但其中一個是xcode作爲主鍵。

+2

「我的X表有5個字段,但它們中的一個是xcode中作爲主鍵」你確定嗎?錯誤表明情況並非如此。請格式化您的SQL語句,併爲xcode表提供架構。 –

+0

你有一個名爲xcode的表與列xcode,該列是主鍵?這看起來不正確。 –

+0

CREATE TABLE X ( xcode中CHAR(10)NOT NULL, char類型(2)NOT NULL, 標題VARCHAR(100)NULL, cipdesc VARCHAR(MAX)NULL, titls VARCHAR(35)NULL, 水平char(1), CONSTRAINT PK_X PRIMARY KEY(x,type), CONSTRAINT FK_X_OCCTYPES FOREIGN KEY(type)REFERENCES occtypes(type), ); 這是X表的創建腳本。 xcode是第一個字段,並且是主鍵和字符(10) –

回答

0

您嘗試加入的輔助表中沒有主鍵。將主鍵添加到要加入的表中,並確保輔助表類型和主鍵的數據類型相同。

實施例:

--Works 
IF OBJECT_ID('.X') IS NOT NULL 
    DROP TABLE .X; 
CREATE TABLE X (Id INT IDENTITY, YId INT, Val VARCHAR(8), CONSTRAINT PK_X_Id PRIMARY KEY (Id)) 

IF OBJECT_ID('.Y') IS NOT NULL 
    DROP TABLE .Y; 
CREATE TABLE Y (Id INT IDENTITY, Val VARCHAR(8), CONSTRAINT PK_Y_Id PRIMARY KEY (Id)) 

ALTER TABLE dbo.X 
ADD CONSTRAINT FK_X_Y_Id FOREIGN KEY(YId) REFERENCES Y(Id) 

--Fails, due to Table Y not having appropriate Primary Key 
IF OBJECT_ID('.X') IS NOT NULL 
    DROP TABLE .X; 
CREATE TABLE X (Id INT IDENTITY, YId INT, Val VARCHAR(8), CONSTRAINT PK_X_Id PRIMARY KEY (Id)) 

IF OBJECT_ID('.Y') IS NOT NULL 
    DROP TABLE .Y; 
CREATE TABLE Y (Id INT IDENTITY, Val VARCHAR(8)) 

ALTER TABLE dbo.X 
ADD CONSTRAINT FK_X_Y_Id FOREIGN KEY(YId) REFERENCES Y(Id) 
+0

感謝您的信息。這個問題最終導致我的輔助表中的外鍵與主表的外鍵不一樣。它令人費解,但你的例子間接導致瞭解決方案。 –

+0

沒問題,如果您對答案感到滿意,請將其填寫完整。 – djangojazz