【问题标题】:Sybase ASE 15.5 : a successful insert which has no effectSybase ASE 15.5:成功插入但没有效果
【发布时间】:2017-07-17 17:44:51
【问题描述】:

我正在尝试将一行插入一个很大(4 亿行)的表中。该表在 (1,2) 列上有 3 列 (integer, varchar(128),varchar(255)), primary keyclustered index,在 (2,1) 列上有 nonclustered index,在第 3 列有非聚集索引。没有外键,没有触发器。

当我这样做时:

insert into mytable values (0,'test_name','test_val')

它执行成功但没有任何效果,没有插入任何内容,我可以成功地重新执行多次,而它应该说“重复密钥”。

可能是什么问题?

注意:noexec 已关闭,手动提交不会更改任何内容。

【问题讨论】:

    标签: sql database sybase sap-ase


    【解决方案1】:

    您可能在其中一个索引上有ignore_dup_key option。检查sp_help 过程的结果以查看您用于索引的所有选项。

    【讨论】:

    • 也许吧。我会检查的。但是没有插入的行呢?
    • 这是该选项的行为。它跳过行并且不插入它们。
    • 任何索引都没有这样的设置。我放弃了这个问题并重新加载了一个新的转储。问题消失了。
    • 如果问题仍然存在,您可以尝试检查@@trancount 设置——也许您之前以某种方式创建了另一个级别的事务。另一个提示是选择@@rowcound 和@@tranchained
    【解决方案2】:

    根据文档,如果ignore_dup_key 是罪魁祸首,当它取消插入时,您应该会收到一条错误消息。您需要在问题中提供更多详细信息,例如错误日志信息,如何插入行.. ETC。 以下是文档中关于上一个答案中提到的索引选项的内容:

    当您开始数据输入时,任何插入重复键的尝试都会被取消并显示错误消息。

    【讨论】:

    • 如果ignore_dup_key启动,你不会得到一个错误,而是一个警告'duplicate key ignored',并且事务继续(在这种情况下只有1行,所以它完成了)跨度>
    • 另一种可能(虽然有点牵强)的解释是表上有一个触发器,它以某种方式删除了插入的行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2016-08-13
    • 2014-08-29
    相关资源
    最近更新 更多