Theo thiết kế, bảng của bạn [cresql].[dbo].[AR_Transactions]
được cho là chỉ giữ một giá trị cho khóa chính - trong trường hợp của bạn, đây dường như là sự kết hợp của các cột tạo nên PK này.
Đây không phải là vấn đề SQL, mà có vẻ là một khái niệm thiết kế.
Bạn nên tìm hiểu tổ hợp khóa nào đang tạo nên khóa chính của mình - có thể là thiết kế nói rằng bạn có thể chèn một lần và cập nhật sau cho tổ hợp đó (mặc dù tôi không coi đây là thiết kế tốt).
CHỈNH SỬA
Vì Trans_Id là PK và bạn không sử dụng cột đó trong phần chèn của mình, nó sẽ được chèn dưới dạng IDENTITY, dưới dạng DEFAULT (brrrrr) hoặc sử dụng TRIGGER.
NHẬN DẠNG: Kiểm tra xem thông số IDENTITY có bị vặn hay không. Nếu vậy, chỉ cần đặt lại nó. Đây là cách Làm cách nào để tôi có thể đặt lại cột nhận dạng trong biến bảng T-SQL?
ĐỊNH NGHĨA: Đây là một lựa chọn kỳ quặc và bạn có thể phải hỏi người thiết kế cơ sở dữ liệu, đọc tài liệu hoặc chỉ đơn giản là tự tìm hiểu. Trong mọi trường hợp, đây là một lựa chọn không phổ biến.
TRIGGER: Tìm trình kích hoạt và đọc qua mã để xem nó đang làm gì. Đây là cách tìm danh sách trình kích hoạt Cách dễ di chuyển nhất để kiểm tra xem trình kích hoạt có tồn tại trong SQL Server hay không?
Tình huống thay thế:
Có thể có một trình kích hoạt chèn vào bảng AUDIT có thể có vấn đề. Kiểm tra xem bảng có bất kỳ trình kích hoạt nào khác không và xem chúng hoạt động như thế nào.