SQL Server插入到不存在的位置
我正在尝试将值插入到一个表中,该表中的值不存在 这就是我目前的情况:SQL Server插入到不存在的位置,sql,sql-server-2012,Sql,Sql Server 2012,我正在尝试将值插入到一个表中,该表中的值不存在 这就是我目前的情况: insert into UToolDb.dbo.MQ_MESSAGES_NEW (ENVId, QueueName, CorrelationId, MessageId, MessageContent) select E.ENVId, 'RO00.GAT1.STUB_OPVANG_1.AI', '32303133313030343131353334393338343836373935
insert into UToolDb.dbo.MQ_MESSAGES_NEW (ENVId, QueueName, CorrelationId, MessageId, MessageContent)
select
E.ENVId,
'RO00.GAT1.STUB_OPVANG_1.AI',
'323031333130303431313533343933383438363739353032',
'C3E2D840E2D8F1F24040404040404040CC0F7930FE822942',
'TEST Content'
from
UToolDb.dbo.ENVIRONMENTS E
where
E.EnvironmentName = 'KETEN1'
and not exists (select
EE.ENVId,
'RO00.GAT1.STUB_OPVANG_1.AI',
'323031333130303431313533343933383438363739353032',
'C3E2D840E2D8F1F24040404040404040CC0F7930FE822942',
'TEST Content'
from
UToolDb.dbo.ENVIRONMENTS EE
where
EE.EnvironmentName = 'KETEN1'
and EE.EnvironmentName = E.EnvironmentName)
出于某种原因,它没有插入:
(0 row(s) affected).
表中不存在要插入的值
我做错了什么?您正在从环境中获取一行,并再次检查同一表中是否不存在同一行 如果MQ_MESSAGES_NEW中已存在行而不是环境中的行,则可能需要找到解决方案:
insert into UToolDb.dbo.MQ_MESSAGES_NEW (
ENVId,
QueueName,
CorrelationId,
MessageId,
MessageContent
)
select
E.ENVId,
?,
?,
?,
?
from UToolDb.dbo.ENVIRONMENTS E
where E.EnvironmentName = 'KETEN1'
and not exists(
select
E.ENVId,
M.*
from UToolDb.dbo.ENVIRONMENTS E
left join UToolDb.dbo.MQ_MESSAGES_NEW M
on E.ENVId = M.ENVId
where E.EnvironmentName = 'KETEN1'
and QueueName = ?
and CorrelationId = ?
and MessageId = ?
and MessageContent = ?
)
为什么要对EE.Environmentname进行双重检查?要进行故障排除,请自行运行子查询以查看是否有任何结果。与您的问题无关,当运行exists/Not exists查询时,在select子句中不需要太多。您所需要的只是从ETC中选择1。我现在唯一的问题是将变量从preparedstatement传递到查询第二部分中的“?”。有人知道吗?