如何在定义新行的PK时复制表中的行?

时间:2011-04-22 13:53:39

标签: sql-server-2008 primary-key

我想在定义PK列值(2)(tblSpillstblSpills.Year)时复制或复制表(tblSpills.Complaint)中的行。

我已经有一个存储过程,它插入一个带有自定义PK值的新行,而其他所有列(大约30个)都是空的。到目前为止,我已经完成了执行现有存储过程来创建新行并获取新PK值作为新Duplicate存储过程的变量,但我无法弄清楚如何从一个复制剩余列行到同一个表中新创建的行。

感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

您没有告诉我们您正在使用的系统/数据库 - 但只是猜测它是否应该是SQL Server,您可以这样做:

INSERT INTO dbo.tblSpills(Year, Complaint, list all other columns here)
   SELECT
      @YearValue, @ComplaintValue, 
      (list of all other columns here)
   FROM
      dbo.tblSpills
   WHERE
      (some condition here, e.g. ID = 42 or something)

基本上,您会根据tblSpillsYear的新值,在Complaint表中插入列的列表,并从中获取同一个表中的所有其他列值现有行(基于您必须定义的WHERE条件)

对于“其他列”:您只需列出需要值或要为其设置特定值的列。那些已经定义了合理的DEFAULT约束的列不需要列出 - 当插入新行时,它们将自动获得定义的默认值。