[英]SQL Update command performs an insertion instead of an update
我一直在开发一个数据库,其中的一个表具有以下设计:
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语言的所有年份中,我从未见过这种行为。 这里曾经发生过什么?
除非它是TRIGGER
,否则我会打赌一些测试环境会错误地指向该数据库。
检查您的表上是否定义了任何触发器,否则您所说的确实是不可能的。 执行以下语句以检查表上的所有触发器。
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 tr_Triggername ON TrainerPokemon;
启用触发器
ENABLE TRIGGER tr_Triggername ON TrainerPokemon;
如果您确实将此语句(如图所示)发送到服务器,那么唯一可以改变行为的构件就是触发器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.