2010-03-10 27 views
5

Tôi cần sao chép một hàng thay đổi PK. Bảng có thể khác nhau trong mỗi lần cài đặt máy khách, vì vậy tôi không thể chỉ liệt kê các cột. Tôi đã thực hiện những việc sau:Cách sao chép một hàng của bảng BẤT K changing thay đổi một cột

INSERT INTO table SELECT * FROM table WHERE PK='value' 

nhưng rõ ràng là không thành công vì tôi đang cố sao chép PK.

Sau đó, tôi đã cố gắng:

INSERT INTO table SELECT 'newValue' AS PK, * FROM table WHERE PK='value' 

Nó cũng thất bại, bởi vì các tên cột không phù hợp.

Tôi biết rằng PK sẽ luôn là cột đầu tiên, nhưng tôi không chắc nó có sử dụng nhiều hay không.

Vì vậy, ... Điều này có khả thi không? Bất kỳ ý tưởng?

Trả lời

7

Giải pháp duy nhất là tạo truy vấn động bằng cách truy vấn danh sách cột và loại trừ cột nhận dạng (đó là lý do tôi giả sử bạn muốn bỏ qua PK).

+0

Tất nhiên, PK viết tắt của khóa chính. – raven

+0

Vì không có câu trả lời nào tốt hơn, tôi chấp nhận câu trả lời này, điều này có vẻ đúng. – raven

2
INSERT INTO table1 (col1_PK, col2 col3) 
SELECT newValue, col2, col3 
FROM table1 
WHERE col1_PK = 'Value' 
+2

Như OP đã nói, anh ta không biết tên cột trước đó. –

Các vấn đề liên quan