小编Pau*_*lin的帖子

ORA-04091:表[blah]正在变异,触发器/函数可能看不到它

我最近开始研究一个大型的复杂应用程序,我刚刚因为这个错误而被分配了一个错误:

ORA-04091: table SCMA.TBL1 is mutating, trigger/function may not see it
ORA-06512: at "SCMA.TRG_T1_TBL1_COL1", line 4
ORA-04088: error during execution of trigger 'SCMA.TRG_T1_TBL1_COL1'
Run Code Online (Sandbox Code Playgroud)

有问题的触发器看起来像

    create or replace TRIGGER TRG_T1_TBL1_COL1
   BEFORE  INSERT OR UPDATE OF t1_appnt_evnt_id ON TBL1
   FOR EACH ROW
   WHEN (NEW.t1_prnt_t1_pk is not  null)
   DECLARE
        v_reassign_count number(20);
   BEGIN
       select count(t1_pk) INTO v_reassign_count from TBL1
              where  t1_appnt_evnt_id=:new.t1_appnt_evnt_id and t1_prnt_t1_pk is not null;
       IF (v_reassign_count > 0) THEN
           RAISE_APPLICATION_ERROR(-20013, 'Multiple reassignments not allowed');
       END IF;
   END;
Run Code Online (Sandbox Code Playgroud)

该表具有主键" t1_pk","约会事件id" t1_appnt_evnt_id和另一列" …

oracle triggers hibernate ora-04091

6
推荐指数
1
解决办法
2万
查看次数

如何在Perl的DBI中使用绑定查询选择空行?

我希望能够将某些内容传递给SQL查询,以确定是否只选择某个列为null的那些查询.如果我只是构建一个查询字符串而不是使用绑定变量,我会做类似的事情:

if ($search_undeleted_only)
{
    $sqlString .= " AND deleted_on IS NULL";
}
Run Code Online (Sandbox Code Playgroud)

但我想使用绑定查询.这会是最好的方式吗?

my $stmt = $dbh->prepare(...
    "AND (? = 0 OR deleted_on IS NULL) ");
$stmt->execute($search_undeleted_only);
Run Code Online (Sandbox Code Playgroud)

sql perl dbi

6
推荐指数
1
解决办法
362
查看次数

为什么"<?" 不再工作而只是"<?php"有效吗?

我使用xampp在本地开发,然后我从直接安装程序安装了PHP.现在在我的一些PHP代码中,只有以"<?php"正确解析" 开头的PHP代码.任何以" <?"或" <?=" 开头的内容都会被完全忽略,并保持原样.

如何调整配置以解析令牌?

php xampp

6
推荐指数
2
解决办法
3266
查看次数

限制LEFT JOIN

我有一个表,我们称之为"a",它在一个涉及大量表的视图中的左连接中使用.但是,如果它们也与另一个表"b"连接,我只想返回"a"行.所以现有代码看起来像

SELECT ....
FROM main ...
...
LEFT JOIN a ON (main.col2 = a.col2)
Run Code Online (Sandbox Code Playgroud)

但它返回太多行,特别是b中没有匹配的行.我试过了

SELECT ...
FROM main ...
...
LEFT JOIN (
   SELECT a.col1, a.col2
   FROM a
   JOIN b ON (a.col3 = b.col3)) ON (a.col2 = main.col2)
Run Code Online (Sandbox Code Playgroud)

这给了我正确的结果但不幸的是"EXPLAIN PLAN"告诉我这样做最终会强制对a和b进行全表扫描,这使得事情变得非常缓慢.我的一个同事在b上建议了另一个LEFT JOIN,但这不起作用,因为它在它出现时给了我b行,但是没有停止从b中没有匹配的行返回行.

有没有办法把main.col2条件放在子SELECT中,这将摆脱全表扫描?或者其他一些方式来做我想要的事情?

sql oracle

5
推荐指数
1
解决办法
2494
查看次数

外来字符在mysql中变成垃圾

我在美国我的网页上有以下内容:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Run Code Online (Sandbox Code Playgroud)

而我的MYSQL表是MyISAM latin1_swedish_ci

但是当有人填写带有外来字符的表单时,它会作为垃圾存储在MySql中.一个例子是带有重音的e等等 - 这在美国英语中通常不常用.即使有人使用了一个奇怪的撇号,它也变成了垃圾:

国家

变成了:

nation’的

我在那里使用常规撇号,但你明白了.外来字符变成3个垃圾字符.请帮忙!TIA

php mysql database encoding character-encoding

5
推荐指数
1
解决办法
3844
查看次数

Java集合中更好的类型安全性

在我的java编码中,我经常会遇到几个Map<String,Map<String,foo>>或者Map<String,List<String>>然后我很难记住哪个String是哪个键.我用//Map<capabiltyId,Map<groupId,foo>>或评论声明//Map<groupId,List<capabilityId>,但这不是最好的解决方案.如果字符串是不是终点,我会作出新的类CapabilityId extends StringGroupId extends String,但我不能.有没有更好的方法来跟踪哪个是关键,也许编译器可以强制执行它?

java collections type-safety

5
推荐指数
2
解决办法
715
查看次数

为什么这段代码在Windows上死机?

我正在尝试将一些代码从Linux移植到Windows.我真的不太了解Windows,所以我有点盲目.有问题的代码尝试使用org.apache.commons.io.FileUtils删除一些目录

  // If the mergesegs worked, delete the segment dirs
    for (File file : segments.listFiles())
    {
        if (!file.equals(mergedSegFile))
        {
            LOG.debug("deleting segment dir " + file);
            FileUtils.deleteDirectory(file);
        }
    }
Run Code Online (Sandbox Code Playgroud)

segments是一个文件,原样mergedSegFile.它以IOException死亡"Unable to delete file: c:\www\tomcat\crawls\test\TestingCode.site\crawldir\segments\20101128194700\parse_test\part-00000\data".

这些文件是由同一程序的上一次运行创建的(它执行了一些Nutch爬行).做一个ls -lunder cygwin显示用户和组是正确的,但是perms是000.

更多信息:

  • dir 没有告诉我有关权限的任何信息.
  • 我可以del在cmd.exe窗口或rm -rfcygwin bash窗口中删除目录.
  • 有问题的文件及其所在的目录是在同一程序的同一次运行中创建的.
  • 计算机正在运行Windows 7,因此我认为这意味着它是NTFS.

java apache-commons

5
推荐指数
1
解决办法
250
查看次数

我们什么时候使用goto*expr; 在C?

| GOTO '*' expr ';'
Run Code Online (Sandbox Code Playgroud)

我还没有看到过这样的陈述,任何人都可以举个例子吗?

c gcc goto

5
推荐指数
2
解决办法
704
查看次数

保存并恢复jQuery对象上的"onclick"操作

我想在页面上禁用一大堆对象,然后再重新启用它们.由于其中一些是标签而不是按钮,我通过删除它们的onclick attr来禁用它们.我试图将旧处理程序存储在.data()中,但不幸的是,当我尝试使用$(obj).attr('onclick',$(obj).data('onclick'))它来恢复它时,它调用函数而不是将其恢复到属性.如果我尝试将它存储在不同的属性而不是数据中,它不存储函数,它存储函数的返回值.

有没有办法在不重写我的页面上的每个标签和每个onclick处理程序的情况下完成此操作?

if( doEnable) {

    $(obj).attr('href', $(obj).data('href'));
    $(obj).attr('onclick', $(obj).data('onclick'));


    $(obj).removeClass(EIS.config.classes.disabled);
    $(obj).show();

}
else {
    // Save the things you're going to remove
    $(obj).data('onclick', $(obj).attr('onclick'));
    $(obj).data('href', $(obj).attr('href'));

    $(obj).prop("href", null);
    $(obj).prop("onclick", null);

    $(obj).addClass(EIS.config.classes.disabled);
    $(obj).show();
   }
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这段代码似乎在Chrome和Firefox中运行良好,但有时只在IE8中运行,而在IE6中从未运行过.不幸的是,客户端首先在IE6中进行测试

javascript jquery function

5
推荐指数
1
解决办法
1万
查看次数

试图将javascript注入我的页面

由于太复杂而无法进入的原因,我有一个ajax调用,它返回一些动态创建的Javascript,我想将其注入到我的页面中.以下代码适用于Chrome,但不适用于IE:

 var node = document.getElementsByTagName("head")[0] || document.body;
  if (node)
  {
    var script = document.createElement("script");
    script.type = "text/javascript";
    //script.innerHTML = json.javascript;
    var textnode = document.createTextNode(json.javascript);
    script.appendChild(textnode);
    node.appendChild(script);
  }
Run Code Online (Sandbox Code Playgroud)

在IE中,我得到"SCRIPT65535:对方法或属性访问的意外调用." 从注释掉的代码中可以看出,在我尝试使用textnode之前,我尝试使用script.innerHTML插入它.这也适用于Chrome,但在IE中我得到了"SCRIPT600:未知的运行时错误".

有没有办法在IE中将一些javascript粘贴到DOM中?

javascript internet-explorer

5
推荐指数
1
解决办法
3395
查看次数