Informix SQL更新命令错误746

Informix SQL更新命令错误746,sql,sql-update,informix,Sql,Sql Update,Informix,我试图更新“合同扫描图像”表中的“合同id”字段。 但是,更新失败,显示错误“746:无法更新字段合同\u id和合同类型\u扫描\u图像!” 我的SQL命令是: update contract_scan_image set contract_id = '14864730' where contract_id = '1486473' and type = 'RM' and account = '00193400944' 有人知道发生了什么以及如何修复吗?错误消息-746用于

我试图更新“合同扫描图像”表中的“合同id”字段。 但是,更新失败,显示错误“746:无法更新字段合同\u id和合同类型\u扫描\u图像!”

我的SQL命令是:

update contract_scan_image
   set contract_id = '14864730'
 where contract_id = '1486473'
   and type = 'RM'
   and account = '00193400944'

有人知道发生了什么以及如何修复吗?

错误消息-746用于用户定义的错误。它通常在RAISE EXCEPTION语句的存储过程中使用:

RAISE EXCEPTION -746, 0, "Field contract_id and type of contract_scan_image cannot be updated!"
消息文件中错误-746的实际消息文本为:

%s
也就是说,它打印作为字符串提供的字符串


因此,您需要在
contract\u scan\u image
表中跟踪触发器和由这些触发器调用的存储过程,并从错误产生的位置推断出您做错了什么。虽然表面上看,似乎不允许您更改合同ID,但这正是您要做的。

首先,我要看一看SQL中的保留字列表-

我习惯于在字段周围加上``如下所示:

update contract_scan_image
set `contract_id` = '14864730'
where `contract_id` = '1486473'
and `type` = 'RM'
and `account` = '00193400944'

**注意-type是一个保留字

该错误是由触发的内容引起的。然后,UPDATE命令不能修改任何表

最后我删除了我想更新的记录。然后添加回修改过的记录

我从这里复制错误描述以供参考

顺便说一句,我问了我的主管,他说他确实触发了什么导致了这一切。(他没有告诉我如何解除触发…)


-746 函数、触发器或存储过程名称中的SQL语句违反嵌套SQL限制

解释 如果正在修改表(通过INSERT、DELETE、UPDATE或MERGE),则下层嵌套SQL语句无法访问该表

如果SELECT语句正在访问任何表,则在任何较低级别的嵌套SQL语句中都不能修改任何表(通过INSERT、DELETE、UPDATE或MERGE)

系统作用 SELECT、INSERT、DELETE、UPDATE或MERGE SQL语句失败

程序员响应 从命名函数、触发器或存储过程中删除失败的语句

SQLSTATE


57053Err…是什么让您认为在Informix中反引号可能是个好主意?MySQL使用它们,但MySQL很奇怪(如中所示,它是唯一使用这种符号表示分隔标识符的主要SQL DBMS)。问题是关于Informix的,Informix将把反引号视为语法错误。此外,Informix非常松散,允许您在大多数地方使用大多数关键字作为标识符,而无需特殊处理。在这种情况下,类型不是问题的一部分。嗯,我想你可能是对的。我真的不确定您是否正在使用sql pro或类似的工具从sql数据库中查询。Informix是一个不同的故事,对吗