2010-03-10 33 views
5

我需要复制一行改变PK。 该表可以在每个客户端安装中有所不同,所以我不能列举列。 我已经成功地做到以下几点:如何复制一列任意表改变一列

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

但很明显,因为我试图复制PK失败。

然后我尝试:

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

它也没有,因为列名不匹配。

我知道PK将永远是第一列,但我不确定它有多大用处。

所以......这可能吗?任何想法?

回答

7

唯一的解决方法是通过查询列的列表来动态构建查询,并排除标识列(这就是为什么我假设您希望跳过PK)。

+0

当然,PK是主键的缩写。 – raven 2010-03-10 17:58:16

+0

由于没有更好的答案,我接受这个,这似乎是正确的。 – raven 2010-03-16 11:15:14

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

正如OP所说,他事先不知道列名。 – 2010-03-10 18:50:09