2013-11-20 27 views
5

Ich habe den folgenden Code:Fremdschlüssel verweist auf die ungültige Tabelle

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 
) 

Der Fremdschlüssel wirft ein Fehler Foreign key 'FK__Number__Name__1CF15040' references invalid table 'Users.Name'. sagen.

Was habe ich falsch gemacht?

+3

Ich glaube nicht, dass es USERS.NAME ist, sollte es USERS (NAME) sein. Überprüfen Sie die Exact-Syntax – Santhosh

+0

@Santhosh: Das löst das Problem mit Verweis. Vielen Dank! Obwohl, jetzt habe ich einen Fehler, der besagt, dass es keine passenden Kandidaten für diesen Fremdschlüssel in 'Benutzer' Tabelle gibt. – ojek

+0

Ihre Datenbank pls? – Santhosh

Antwort

3

Bitte beachten Sie in diesem SQLfiddle Link, Link

CREATE TABLE NUMBER(
    ID INT PRIMARY KEY, 
    NUMBER VARCHAR(10) NOT NULL, 
    NAME VARCHAR(36) NOT NULL REFERENCES USERS(NAME) 
); 
0

Sie sollten auf den Primärschlüssel von test.dbo.users verweisen.

In SQL Server können Sie dies tun:

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) 
) 

In der oben haben Sie eine verbindliche Zuordnung zwischen den zwei Tabellen. Wenn Sie eine optionale Beziehung haben möchten, entfernen Sie 'not null' von Id_Fk ....

Hinweis: Ich weiß nicht, wofür die Spalte Name steht.

+0

Ja, sollte wahrscheinlich nicht auf "Name" verweisen. Aber was, wenn ich das brauchte? Wie mache ich es? – ojek

1

Fremdschlüssel muss

ich den folgenden Code

Ich würde verwenden, um einen Primärschlüssel in einer anderen Tabelle verweisen hoffen, dass es nützlich ist,

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 
) 
0

Für Leute, die 100% positiv waren, dass Tabelle existiert, wie ich war, bitte überprüfen Sie web.config. Ich hatte einen Tippfehler und es gab diesen Fehler, der kontraintuitiv ist, wenn Sie mich fragen, aber das ist der Fall.

Verwandte Themen