**已关闭。**此问题为not reproducible or was caused by typos。当前不接受答案。
这个问题是由一个错字或一个无法再复制的问题引起的。虽然类似的问题可能是on-topic在这里,但这个问题的解决方式不太可能帮助未来的读者。
10小时前关闭。
Improve this question
我正在使用Go将行插入到SQL Server数据库的表中。尝试将行插入到表中时出现以下错误。"The INSERT statement conflicted with the FOREIGN KEY constraint \"FK_MessageStream_Message\". The conflict occurred in database \"Alerting\", table \"t_pipe.Message\", column 'MessageID'."
我使用SQL Server Management Studio来显示约束:
USE [Alerting]
GO
ALTER TABLE [t_pipe].[MessageStream] WITH CHECK ADD CONSTRAINT [FK_MessageStream_Message] FOREIGN KEY([MessageID])
REFERENCES [t_pipe].[Message] ([MessageID])
ON DELETE CASCADE
GO
我还验证了在抛出此错误时表中存在MessageID。在尝试插入此值之前不久,将消息及其关联ID插入到表中。
使用VS Code调试器,我能够显示我试图插入的Stream对象的值。
下面您可以看到MessageID确实存在于它所抱怨的表中。
任何帮助都很感激。
2条答案
按热度按时间k10s72fa1#
我发现这个问题是一个坏的变量名在执行插入的一面。
tkclm6bt2#
在这种情况下,我将尝试指出两件事:
检查“MessageStream”表上是否存在可能导致此问题的任何触发器或约束。您可以通过在“sys.triggers”或“sys.check_constraints”系统表上运行SELECT语句来执行此操作。
最重要的是检查是否有任何可能干扰插入操作的事务。如果您正在使用事务,请确保在尝试将“MessageID”值插入到“MessageStream”表之前将其提交到数据库。
您可以调试该问题,并在插入操作之前暂停,然后从management studio查询数据库,以确定父表中是否存在该记录。请不要使用
WITH (NOLOCK)
提示。