" DELETE语句与REFERENCE约束冲突"虽然参考表

时间:2015-04-27 08:37:03

标签: sql sql-server foreign-key-relationship

我有两个相关的表格:

[GameDataGroup] with PK

[Arena_GameData] with FK

我尝试执行查询:

 DELETE FROM [ACP_MAIN_STABLE_DB_content].[dbo].[GameDataGroup] 
 WHERE [key] LIKE '%' + '_test_group' + '%'

并留言:

  

DELETE语句与REFERENCE约束冲突   " FK__Arena_GameData__GameDataGroup&#34 ;.冲突发生在数据库中   " ACP_MAIN_STABLE_DB_content",table" dbo.Arena_GameData",列   ' gameDataGroupId'

虽然"dbo.Arena_GameData", column 'gameDataGroupId'中没有相关数据。为什么要删除该记录?

' FK__Arena_GameData__GameDataGroup'定义:

enter image description here enter image description here

2 个答案:

答案 0 :(得分:1)

您的DELETE查询获得的结果超出预期,因为就LIKE而言,_是一个通配符。

因此LIKE '%_test_group%'将匹配任何至少包含一个字符的文本,然后是字符test,然后是任何字符,然后是字符group,可选地后跟任意数量的字符 - 不像你可能期望的那样,它需要准确找到序列_test_group

如果你需要进行这些匹配,你可以使用转义 - LIKE '%!_test!_group%' ESCAPE '!'应该做你正在寻找的事情。

答案 1 :(得分:0)

如果任何其他表中的任何记录都是referenced,则从表中删除记录时会收到错误消息,因此您无法从表中删除那些具有referenced的记录通过其他或您应该使用cascade选项删除这些引用。

相关问题