我有以下代码:
create table test.dbo.Users
(
Id int identity(1,1) primary key,
Name varchar(36) not null
)
create table test.dbo.Number
(
Id int identity(1,1) primary key,
Number varchar(10) not null,
Name varchar(36) not null foreign key references Users.Name
)
外键引发错误Foreign key 'FK__Number__Name__1CF15040' references invalid table 'Users.Name'.
。
我做错了什么?
答案 0 :(得分:5)
请参阅此SQLfiddle链接Link
CREATE TABLE NUMBER(
ID INT PRIMARY KEY,
NUMBER VARCHAR(10) NOT NULL,
NAME VARCHAR(36) NOT NULL REFERENCES USERS(NAME)
);
答案 1 :(得分:2)
外键必须引用另一个表中的主键
我会使用以下代码
我希望它有用
use test
create table test.dbo.Users
(
Id int identity(1,1) primary key,
Name varchar(36) not null
)
create table test.dbo.Number
(
Id int identity(1,1) primary key,
Number varchar(10) not null,
Users_Id int not null
constraint fk_Number_Users foreign key (Users_Id)
references Users(Id)
on update no action
on delete no action
)
答案 2 :(得分:1)
对于那些100%肯定表存在的人,就像我一样,请务必检查web.config。我在那里有一个拼写错误,它给出了这个错误,如果你问我,这是违反直觉的,但事实就是如此。
答案 3 :(得分:0)
您应该引用test.dbo.users的主键。
在SQL Server中,您可以这样做:
create table Number
(
Id int identity(1,1) primary key,
Number varchar(10) not null,
Name varchar(36) not null ,
Id_FK int not null foreign key references Users(id)
)
在上面,您有两个表之间的强制关联。如果您想拥有可选关系,请从Id_Fk中删除“not null”....
注意:我不知道名称列是什么。
答案 4 :(得分:0)
如果您正在运行一堆脚本来创建表,那么可能有必要确保引用的表脚本在使用者表之前运行。
答案 5 :(得分:-1)
GET http://localhost:8080/rest/s1/mantle/facilities/
Accept: application/application/json
Authorization: Basic am9obi5kb2U6bW9xdWk=
[
{
"facilityId": "ZIRET_WH",
"pseudoId": "ZIRET_WH",
"facilityTypeEnumId": "FcTpWarehouse",
"ownerPartyId": "ORG_ZIZI_RETAIL",
"facilityName": "Ziziwork Retail Warehouse",
"assetAllowIssueOverQoh": "Y",
"lastUpdatedStamp": 1550661258932
}
]
,然后创建表。 为我工作。