2011-01-21 64 views
3

我有一个表,有一堆列。需要SQL帮助来复制行

有一个主键是作为int数据类型的ID并且没有外键。这个PK使用Identity Specification进行设置,增量和种子都设置为1,无论如何。它被设置为Yes for Not For Replication。还有两个重要的行,数据年份和参考数字,我将用它们专门选择要复制的行。

有什么办法使用SQL或SQL和C#的组合来按引用号复制特定的一组行,并为每行分配一个唯一的主键ID本身?每次复制的行数可能会有所不同,因此需要灵活。在系统中选择ID时不会有任何问题,或者可能获得最大ID,并为每一行复制或增加1。我也会在列中添加一个新的年份,但是与通过这种类型的列的SQL语句为每行设置主键ID的主要问题相比,这很容易...

请帮帮我!我不是一个完全的SQL新手,但我仍然在学习,并且从来没有遇到过这种类型的问题,特别是Not For Replication等问题。

+0

种子= 1表示从1开始并增加意味着每个值应该增加1 – JeffO 2011-01-21 22:13:24

回答

2

因为你的主键是标识列,您可以选择您想要的行(除了不选择标识列),并将其重新插入到同一表:

INSERT INTO table1 (col1, col2, col3) 
SELECT (col1, col2, col3) FROM table1 
WHERE .... 
+0

不工作,因为我已经尝试过,我设置该表的Identity_insert ...然后代码...然后关闭,我得到这个错误使用:显式值必须在IDENTITY_INSERT设置为ON或复制用户插入NOT FOR REPLICATION标识列时为表'table'中的标识列指定。 – 2011-01-21 22:19:12