我有两个相关的表格:
[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'定义:
答案 0 :(得分:1)
您的DELETE
查询获得的结果超出预期,因为就LIKE
而言,_
是一个通配符。
因此LIKE '%_test_group%'
将匹配任何至少包含一个字符的文本,然后是字符test
,然后是任何字符,然后是字符group
,可选地后跟任意数量的字符 - 不像你可能期望的那样,它需要准确找到序列_test_group
。
如果你需要进行这些匹配,你可以使用转义 - LIKE '%!_test!_group%' ESCAPE '!'
应该做你正在寻找的事情。
答案 1 :(得分:0)
如果任何其他表中的任何记录都是referenced
,则从表中删除记录时会收到错误消息,因此您无法从表中删除那些具有referenced
的记录通过其他或您应该使用cascade
选项删除这些引用。