繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM