Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Thông báo lỗi 1785 xảy ra khi bạn tạo một hạn chế nước ngoài chính mà có thể gây ra nhiều thác đường dẫn

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:321843
TRIỆU CHỨNG
Bạn có thể nhận được thông báo lỗi sau khi bạn tạo một hạn chế nước ngoài chính:
Máy chủ: Msg 1785, tầng 16, bang 1, dòng 1Giới thiệu các hạn chế nước ngoài phím 'fk_two' trên bảng 'table2' có thể gây ra chu kỳ hoặc nhiều thác đường dẫn. Chỉ định trên DELETE không có hành động hoặc hành động NO ON Cập Nhật, hoặc sửa đổi những hạn chế nước ngoài chính khác.Máy chủ: Msg 1750, tầng 16, bang 1, dòng 1Không thể tạo hạn chế. Xem trước lỗi.
NGUYÊN NHÂN
Bạn nhận được thông báo lỗi này bởi vì trong SQL Server, một bảng không thể xuất hiện nhiều hơn một thời gian trong danh sách của tất cả các tầng hành referential động đang bắt đầu bằng cách xoá một hoặc một tuyên bố UPDATE. Ví dụ, cây tầng referential những hành động phải chỉ có một đường dẫn đến một bảng cụ thể trên tầng hành động referential cây.
CÁCH GIẢI QUYẾT KHÁC
Để làm việc xung quanh vấn đề này, không tạo ra một chìa khóa nước ngoài mà sẽ tạo ra nhiều hơn một đường dẫn đến một bảng trong một danh sách các tầng referential những hành động.

Bạn có thể thi hành toàn vẹn referential theo nhiều cách. Transformations Referential toàn vẹn (DRI) là cách cơ bản nhất, nhưng nó cũng là cách ít nhất là dẻo. Nếu bạn cần linh hoạt hơn, nhưng bạn vẫn muốn một mức độ cao của toàn vẹn, bạn có thể sử dụng gây nên để thay thế.
THÔNG TIN THÊM
Mẫu mã sau đây là một ví dụ về một nỗ lực sáng tạo ngoại khóa mà tạo ra các thông báo lỗi:
Use tempdbgocreate table table1 (user_ID integer not null primary key, user_namechar(50) not null)gocreate table table2 (author_ID integer not null primary key, author_namechar(50) not null, lastModifiedBy integer not null, addedby integer notnull)goalter table table2 add constraint fk_one foreign key (lastModifiedby)references table1 (user_ID) on delete cascade on update cascadegoalter table table2 add constraint fk_two foreign key (addedby)references table1(user_ID) on delete no action on update cascadego--this fails with the error because it provides a second cascading path to table2.alter table table2 add constraint fk_two foreign key (addedby)references table1 (user_ID) on delete no action on update no actiongo-- this works.				

TÀI LIỆU THAM KHẢO

Để biết thêm chi tiết, xin vui lòng xem chủ đề "Cascading Referential hạn chế tính toàn vẹn" trong SQL Server 2000 cuốn sách trực tuyến.

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 321843 - Xem lại Lần cuối: 08/27/2011 13:26:00 - Bản sửa đổi: 2.0

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbbug kbpending kbprb kbprogramming kbmt KB321843 KbMtvi
Phản hồi