Tôi có một truy vấn mà tôi cần phải "bó" hàng chèn vào một bảng có khóa chính không có nhận dạng.T-SQL, Chèn vào với MAX() + 1 trong truy vấn phụ không tăng, lựa chọn thay thế?
--TableA
--PK int (Primary key, no-identity)
--CustNo int
INSERT INTO TableA (PK,CustNo)
SELECT (SELECT MAX(PK)+1 AS PK FROM TableA), CustNo
FROM Customers
(ví dụ đơn giản - vui lòng không bình luận về vấn đề đồng thời có thể :-))
Vấn đề là nó không tăng PK "cho mỗi" hàng chế biến, và tôi nhận được một vi phạm chính tiểu học.
Tôi biết cách thực hiện điều đó bằng vòng lặp con trỏ/vòng lặp, nhưng tôi muốn tránh điều đó và giải quyết theo cách được thiết lập, nếu điều đó có thể xảy ra?
(chạy SQL Server 2008 Standard)
Tại sao bạn không đặt cột này thành cột nhận dạng? – Chandu
+1 @Cybernate - đây là một ý tưởng khủng khiếp và nếu bạn đã lo lắng tìm kiếm trên SO có khoảng 20 câu hỏi tương tự như thế này, mỗi câu hỏi cho bạn biết tại sao đó là một ý tưởng tồi. – JNK
Câu chuyện dài ngắn: tôi sẽ tạo một danh tính nếu tôi có thể :-). @ JNK tôi làm phiền hoàn toàn, nhưng đó là lựa chọn duy nhất của tôi, và tôi muốn giải quyết nó theo cách tốt nhất có thể. Cũng nhớ tôi cung cấp một ví dụ đơn giản. – KorsG