2013-11-20 17 views
5

Mam następujący kod:klucz obcy referencje Nieprawidłowa tabela

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 
) 

Klucz obcy zgłasza błąd mówiąc Foreign key 'FK__Number__Name__1CF15040' references invalid table 'Users.Name'..

Co zrobiłem źle?

+3

Nie sądzę, że to jest USERS.NAME, powinno to być USERS (NAZWA). sprawdź składnię extact – Santhosh

+0

@Santhosh: To rozwiązuje problem z referencją. Dzięki! Chociaż, teraz mam błąd mówiąc, że nie ma pasujących kandydatów do tego klucza obcego w tabeli "Użytkownicy". – ojek

+0

twoja baza danych pls? – Santhosh

Odpowiedz

3

Proszę zobaczyć w tym SQLfiddle łącza Link

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

Powinieneś odwołać się do klucza głównego test.dbo.users.

W SQL Server można to zrobić:

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

powyżej, masz obowiązek stowarzyszenie między 2 tabel. Jeśli chcesz mieć opcjonalną relację, usuń wartość "nie pustą" z Id_Fk ....

Uwaga: Nie wiem, do czego służy kolumna Nazwa.

+0

Tak, prawdopodobnie nie powinien odnosić się do 'Nazwa'. Ale co, jeśli tego potrzebowałem? Jak mam to zrobić? – ojek

1

Klucz obcy musi odwoływać się do klucza podstawowego w innej tabeli

chciałbym użyć następującego kodu

Mam nadzieję, że jest przydatna

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

Dla osób, które w 100% były pozytywne istnieje, tak jak byłem, koniecznie sprawdź web.config. Miałem tam literówkę i podawałem ten błąd, co jest sprzeczne z intuicją, jeśli mnie pytasz, ale tak właśnie jest.