2013-11-20 14 views
5

Tôi có đoạn mã sau:tài liệu tham khảo quan trọng ngoại bảng hợp lệ

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 
) 

Chìa khóa nước ngoài ném một lỗi nói Foreign key 'FK__Number__Name__1CF15040' references invalid table 'Users.Name'..

Tôi đã làm gì sai?

+3

Tôi không nghĩ đó là USERS.NAME, nó phải là NGƯỜI DÙNG (NAME). kiểm tra cú pháp mở rộng – Santhosh

+0

@Santhosh: Điều đó giải quyết vấn đề với tham chiếu. Cảm ơn! Mặc dù, bây giờ tôi đã nhận được một lỗi nói rằng không có ứng cử viên phù hợp cho khóa nước ngoài này trong bảng 'Users'. – ojek

+0

pls cơ sở dữ liệu của bạn? – Santhosh

Trả lời

3

Xin vui lòng xem tại link SQLfiddle này, Link

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

Bạn nên tham khảo Khóa chính của test.dbo.users.

Trong SQL Server bạn có thể làm điều này:

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

Ở phía trên, bạn có một hiệp hội bắt buộc giữa 2 bảng. Nếu bạn muốn có mối quan hệ tùy chọn, hãy xóa 'không rỗng' khỏi Id_Fk ....

Lưu ý: Tôi không biết cột Tên là gì.

+0

Vâng, có lẽ không nên tham chiếu 'Tên'. Nhưng nếu tôi cần điều đó thì sao? Tôi phải làm nó như thế nào? – ojek

1

chính nước ngoài phải tham khảo một khóa chính trong bảng khác

Tôi sẽ sử dụng đoạn mã sau

Tôi hy vọng nó rất hữu ích

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

Đối với những người có 100% tích cực mà Bảng không tồn tại, như tôi đã, hãy chắc chắn để kiểm tra web.config. Tôi đã có một lỗi đánh máy trong đó và nó đã đưa ra lỗi này, đó là phản trực giác nếu bạn hỏi tôi, nhưng đó là trường hợp.

Các vấn đề liên quan