检查anolther表中是否存在数据,如果不存在则插入

时间:2015-01-23 02:07:47

标签: sql sql-server database insert

我有2个数据库,1个数据库叫做new,另一个数据库叫test。 数据库(新)连续接受来自处理器的新数据,而数据库(测试)根本没有数据。现在我想每秒从数据库(新)插入数据到数据库(测试),但如果数据库(测试)中已存在来自数据库(新)的数据,则不会传输。每秒传输都已完成,但我的查询无法正常工作。

这是我的查询

INSERT INTO [test].[dbo].[test]
SELECT TOP 1 * 
FROM [NEW].[dbo].[new] cr
WHERE
NOT EXISTS (SELECT TOP 1 * FROM [test].[dbo].[test] c
          WHERE cr.smsdt = c.smsdt)

当我尝试运行我的查询时,这是我得到的错误

An explicit value for the identity column in table 'test.dbo.test' can only be specified when a column list is used and IDENTITY_INSERT is ON.

我尝试使用此

SET IDENTITY_INSERT [test].[dbo].[test] ON

但错误仍然存​​在。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

正如错误所示,当您使用column list时需要在插入中提及IDENTITY_INSERT ON

INSERT INTO [test].[dbo].[test](colum1,colum..)
SELECT TOP 1 colum1,colum2,..
FROM [NEW].[dbo].[new] cr
WHERE
NOT EXISTS (SELECT  * FROM [test].[dbo].[test] c
          WHERE cr.smsdt = c.smsdt)

Top 1中使用Not exists时,subquery没有用,而且您检查的数据是否存在于同一个表中而不是另一个表中。