1
我在尝试更新表,以便添加缺少的行并使用来自另一个表上的信息更新未更新的行不同的数据库作为参考。在可能有或没有主键的表上插入行和更新行
但是,有些表具有主键,有些不具有主键。 如果存在主键,insert命令将不会运行,并且如果没有主键,则行将重复。
有没有办法让insert命令跳过已存在的主键值?
我使用SQL Server Management Studio 2005和这里是我的代码到目前为止关于与主键(PKcolumn)的表:
INSERT [testDB].[dbo].[table1]
SELECT * FROM [sourceDB].[dbo].[table1]
UPDATE test
SET
test.[PKcolumn] = source.[PKcolumn]
,test.[column2] = source.[column2]
,test.[column3] = source.[column3]
FROM
[sourceDB].[dbo].[sourceDB] AS source
INNER JOIN
[testDB].[dbo].[PKcolumn] AS test
ON source.[PKcolumn] = test.[PKcolumn]
更新的作品完美,但插入将无法运行如果甚至有一个重复。
有关如何使此代码工作的任何建议?
此外,在没有主键的表上做同样的事情的任何提示?
内部连接子句始终为真可能是'source。[PKcolumn] = test。[PKcolumn]' – 2012-07-31 15:56:47
这些表是否有任何具有唯一约束或唯一索引的列或列? ('NOT NULL UNIQUE'的行为与'PRIMARY KEY'的行为相同;都可以唯一标识所讨论的事物,并且都可以用于外键引用。) – 2012-07-31 18:37:26