Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 r2 引用表中的列无效_Sql Server 2008 R2 - Fatal编程技术网

Sql server 2008 r2 引用表中的列无效

Sql server 2008 r2 引用表中的列无效,sql-server-2008-r2,Sql Server 2008 R2,我正在一个新的数据库中设置两个表。我有一个Users表、一个companys表、一个usercompanys表(因此用户可以为许多不同的公司工作)和一个UserPay表 CREATE TABLE tblUsers ( [UserTableID] INT IDENTITY NOT NULL PRIMARY KEY, [UserEmail] VARCHAR(50) NOT NULL, [UserFirstName] VARCHAR(20) NOT NULL, [UserLastName] V

我正在一个新的数据库中设置两个表。我有一个
Users
表、一个
companys
表、一个
usercompanys
表(因此用户可以为许多不同的公司工作)和一个
UserPay

CREATE TABLE tblUsers
(
[UserTableID] INT IDENTITY NOT NULL PRIMARY KEY,    
[UserEmail] VARCHAR(50) NOT NULL,
[UserFirstName] VARCHAR(20) NOT NULL,
[UserLastName] VARCHAR(20) NOT NULL,
[UserAddress1] VARCHAR(45) NULL,
[UserAddress2] VARCHAR(45) SPARSE NULL,
[UserCity] VARCHAR(45) NULL,
[UserState] VARCHAR(2) NULL,
[UserZipCode] VARCHAR(10) NULL,
[UserPhone] VARCHAR(13) NULL,
)

CREATE TABLE tblCompanies
(
[CompanyID] INT IDENTITY NOT NULL PRIMARY KEY,
[CompanyName] VARCHAR(45) NOT NULL,
[CompanyAddress1] VARCHAR(45) NULL,
[CompanyAddress2] VARCHAR(45) SPARSE NULL,
[CompanyCity] VARCHAR(45) NULL,
[CompanyState] VARCHAR(2) NULL,
[CompanyPhone] VARCHAR(13) NULL,
[CompanyPhoneExtension] VARCHAR(8) NULL,
[CompanyContactFirstName] VARCHAR(20) NOT NULL,
[CompanyContactLastName] VARCHAR(20) NOT NULL
)

CREATE TABLE tblUserCompanies
(
[UserTableID] INT NOT NULL,
[CompanyID] INT NOT NULL,
PRIMARY KEY (UserTableID, CompanyID),
FOREIGN KEY (UserTableID) REFERENCES tblUsers(UserTableID),
FOREIGN KEY (CompanyID) REFERENCES tblCompanies(CompanyID)  
)

CREATE TABLE tblUserPay
(
[UserPayID] INT IDENTITY NOT NULL PRIMARY KEY,
[UserID] INT NOT NULL REFERENCES tblUserCompanies(UserTableID),
[UserCompany] INT NOT NULL REFERENCES tblUserCompanies(CompanyID),
[NetPay] MONEY NOT NULL,
[PayDate] DATE NOT NULL
)
问题是我得到了一个错误,它表明。。“引用的表
tbluserpanies
中没有与
tblUserPay
中的引用列列表匹配的主键或候选键

我不明白我为什么会出错。相同的数据类型,外键在tact中,主键已建立。我唯一能想到的是,它会抛出一个错误,因为我有一个外键链接到另一个外键。如果可以,请提供帮助!谢谢遵循此示例

CREATE TABLE dbo.Table1(
    Table1Col1 int NOT NULL
    ,Table1Col2 int NOT NULL
    ,CONSTRAINT PK_Table1 PRIMARY KEY CLUSTERED(
        Table1Col1
        ,Table1Col2)    
);

CREATE TABLE dbo.Table2(
    Table2Col1 int NOT NULL
        CONSTRAINT PK_Table2 PRIMARY KEY CLUSTERED 
    ,Table1Col1 int NOT NULL
    ,Table1Col2 int NOT NULL
    ,CONSTRAINT FK_Table2_Table1 FOREIGN KEY(
        Table1Col1
        ,Table1Col2)
        REFERENCES dbo.Table1(
        Table1Col1
        ,Table1Col2
    )
);
遵循此示例

CREATE TABLE dbo.Table1(
    Table1Col1 int NOT NULL
    ,Table1Col2 int NOT NULL
    ,CONSTRAINT PK_Table1 PRIMARY KEY CLUSTERED(
        Table1Col1
        ,Table1Col2)    
);

CREATE TABLE dbo.Table2(
    Table2Col1 int NOT NULL
        CONSTRAINT PK_Table2 PRIMARY KEY CLUSTERED 
    ,Table1Col1 int NOT NULL
    ,Table1Col2 int NOT NULL
    ,CONSTRAINT FK_Table2_Table1 FOREIGN KEY(
        Table1Col1
        ,Table1Col2)
        REFERENCES dbo.Table1(
        Table1Col1
        ,Table1Col2
    )
);

链接到复合键时,需要有一个包含两列的外键引用,类似于:

CREATE TABLE tblUserPay
(
[DriverPayID] INT IDENTITY NOT NULL PRIMARY KEY,
[UserID] INT NOT NULL,
[UserCompany] INT NOT NULL,
[NetPay] MONEY NOT NULL,
[PayDate] DATE NOT NULL,
FOREIGN KEY (UserID, UserCompany) REFERENCES tblUserCompanies(UserTableID, CompanyID)
)

链接到复合键时,需要有一个包含两列的外键引用,类似于:

CREATE TABLE tblUserPay
(
[DriverPayID] INT IDENTITY NOT NULL PRIMARY KEY,
[UserID] INT NOT NULL,
[UserCompany] INT NOT NULL,
[NetPay] MONEY NOT NULL,
[PayDate] DATE NOT NULL,
FOREIGN KEY (UserID, UserCompany) REFERENCES tblUserCompanies(UserTableID, CompanyID)
)

DOH!我就知道!谢谢,解决了问题!DOH!我就知道!谢谢,解决了问题!