Không chắc chắn liệu bạn có thể thực hiện điều này mà không sử dụng sql động để xây dựng câu lệnh cập nhật trong một biến hay không.
Tuyên bố này sẽ trả về một danh sách các cột dựa trên tên bảng bạn đặt vào:
select name from syscolumns
where [id] = (select [id] from sysobjects where name = 'tablename')
Không chắc chắn nếu tôi có thể tránh một vòng lặp ở đây .... bạn sẽ cần phải tải các kết quả từ ở trên vào một con trỏ và sau đó xây dựng một truy vấn từ nó. Psuedo được mã hóa:
set @query = 'update [1607348182] set '
load cursor --(we will use @name to hold the column name)
while stillrecordsincursor
set @query = @query + @name + ' = tmp_[1607348182]. ' [email protected] + ','
load next value from cursor
loop!
Khi truy vấn được thực hiện đang được xây dựng trong vòng lặp, hãy sử dụng exec sp_executesql @query.
Chỉ cần một chút cảnh báo ... xây dựng sql động trong một vòng lặp như thế này có thể gây nhầm lẫn một chút. Để khắc phục sự cố, hãy đặt @query vào vòng lặp và xem @query được tạo.
chỉnh sửa: Không chắc chắn liệu bạn có thể làm tất cả 1000 hàng trong bản cập nhật cùng một lúc không ... có giới hạn hợp lý (varchar (8000)?) Về kích thước mà @query có thể phát triển quá. Bạn có thể phải chia mã để nó xử lý 50 cột cùng một lúc. Đặt các cột từ câu lệnh select syscolumns vào một bảng tạm thời với một id và xây dựng sql động của bạn để nó cập nhật 20 cột (hoặc 50?) Tại một thời điểm.
Một giải pháp thay thế khác là sử dụng excel để tạo khối lượng này. Do cột chọn và sao chép các kết quả vào cột a của bảng tính. Đặt '= trong cột b, tmp. [12331312] trong cột c, sao chép cột a vào cột D và dấu phẩy vào cột e. Sao chép toàn bộ bảng tính vào một notepad và bạn nên có các cột của câu lệnh cập nhật được xây dựng cho bạn. Không phải là một giải pháp tồi nếu đây là một sự kiện một shot, không chắc chắn nếu tôi dựa vào điều này như là một giải pháp đang diễn ra.
Tôi khuyên bạn nên sử dụng 'TRIGGER' hoặc sửa đổi lược đồ của bạn để bạn không phải thực hiện việc này. –
Tôi không hiểu. Sau lần cập nhật đầu tiên của bạn, hai bảng sẽ chứa các hàng giống hệt nhau, vì vậy bạn đang hy vọng bản cập nhật thứ hai sẽ làm gì? – PaulG
Travis G, tôi đồng ý với bạn để sửa đổi lược đồ db nhưng tiếc là tôi nên làm theo lược đồ này trong dự án của tôi. – amuliar