KHẮC PHỤC: Xung đột với ràng buộc khóa ngoại xảy ra khi bạn cập nhật trường hợp của các giá trị cột trong bảng khóa chính hoặc bạn chèn các giá trị cột trong bảng khóa chính ở SQL Server 2005

Triệu chứng

Khi bạn cập nhật cột khóa chính của bảng khóa chính trong Microsoft SQL Server 2005 bằng cách thay đổi kiểu chữ hoa/thường của các giá trị cột hiện có hoặc bằng cách đệm các giá trị cột, bạn sẽ nhận được thông báo lỗi sau đây:

Lưu ý

Thông báo 547, Mức 16, Trạng thái 0, Dòng 1

Câu lệnh UPDATE xung đột với ràng buộc REFERENCE "<Constraint>". Xung đột xảy ra ở cơ sở dữ liệu "<Tên cơ> sở dữ liệu", bảng "<Tên bảng>", cột "<Tên cột>".

Ví dụ: sự cố này xảy ra trong cả hai tình huống sau.

Ví dụ 1

  • Bạn tạo hai bảng bằng cách sử dụng đối chiếu phân biệt chữ hoa, chữ thường, như đối chiếu SQL_Latin1_General_CP1_CI_AS.
  • Bạn xây dựng quan hệ khóa chính và khóa ngoại giữa hai bảng này.
  • Bạn cập nhật cột khóa chính của bảng khóa chính bằng cách thay đổi kiểu chữ hoa/chữ thường của các giá trị cột hiện tại.

Ví dụ 2

  • Bạn sẽ tạo hai bảng.

  • Bạn xây dựng quan hệ khóa chính và khóa ngoại giữa hai bảng này.

  • Cài đặt ANSI_PADDING được đặt thành TẮT.

    Lưu ý Theo mặc định, cài đặt ANSI_PADDING được đặt là TẮT.

  • Bạn cập nhật cột khóa chính của bảng khóa chính bằng cách đệm các giá trị cột.

Nguyên nhân

Sự cố này xảy ra do các giá trị bằng nhau ở cấp độ kiểu có thể khác nhau ở cấp nhị phân.

Ví dụ, ở mức kiểu, N'a' bằng N'A'. Tuy nhiên, ở mức nhị phân, N'a' không bằng N'A'. Cơ chế tối ưu hóa giả định không chính xác rằng hoạt động cập nhật thay đổi chữ hoa/thường không thực hiện bất kỳ thay đổi thực sự nào. Do đó, kiểm tra PK-FK không thành công.

Giải pháp

Thông tin gói dịch vụ

Để giải quyết sự cố này, hãy tải gói dịch vụ mới nhất dành cho SQL Server 2005. Để biết thêm thông tin, hãy bấm vào số bài viết sau đây để xem bài viết trong Cơ sở Kiến thức Microsoft:

913089 Cách lấy gói dịch vụ mới nhất cho SQL Server 2005

Trạng thái

Microsoft đã xác nhận rằng đây là sự cố trong các sản phẩm của Microsoft được liệt kê trong mục "áp dụng cho". Sự cố này được khắc phục lần đầu ở SQL Server 2005 Gói Dịch vụ 3.

Xem thêm thông tin

Để biết thêm thông tin về thuật ngữ cập nhật phần mềm, hãy bấm vào số bài viết sau để xem bài viết trong Cơ sở Kiến thức Microsoft:

824684 Mô tả thuật ngữ chuẩn được sử dụng để miêu tả các bản cập nhật phần mềm của Microsoft