SQL Update命令执行插入而不是更新

时间:2013-12-19 20:14:52

标签: sql sql-server sql-update sql-insert

我一直在开发一个数据库,其中一个表具有以下设计:

http://imageshack.us/scaled/landing/843/3z08.jpg

我尝试执行以下UPDATE命令:

UPDATE TrainerPokemon SET PokemonID = 2, lvl = 55, 
AbilityID = 2, MoveSlot1 = 8, MoveSlot2 = 9, 
MoveSlot3 = 6, MoveSlot4 = 7 WHERE ID = 48

这是执行UPDATE命令之前的数据表示:

http://imageshack.us/scaled/landing/853/01aa.jpg

这是执行后的数据表示:

http://imageshack.us/scaled/landing/841/ul5j.jpg

如上图所示,很明显UPDATE命令的行为类似于INSERT命令。老实说,在我使用数据库和SQL语言的这些年里,我从未见过这种行为。 在这里发生了什么?

3 个答案:

答案 0 :(得分:2)

除非是TRIGGER,否则我会打赌某些测试环境错误地指向此数据库。

答案 1 :(得分:2)

检查您的桌子上是否有任何触发器,否则您说的确是不可能的。执行以下语句以检查表上的任何触发器。

SELECT SO.NAME, SC.[text]
FROM sysobjects SO INNER JOIN  syscomments SC
ON SO.ID = SC.ID
WHERE SO.[type] = 'TR'
AND SC.[text] LIKE '%TrainerPokemon%'

希望它很可能是一个触发器,一旦你确定它是导致问题的触发器,只需在更新之前禁用它并在完成更新后启用它。

像这样的东西

DISABLE TRIGGER

DISABLE TRIGGER tr_Triggername ON TrainerPokemon;

ENABLE TRIGGER

ENABLE TRIGGER tr_Triggername ON TrainerPokemon;

答案 2 :(得分:1)

如果您真正将此语句(如图所示)发送到服务器,那么唯一可能改变行为的工件就是触发器。