我已经定义了这个mapper方法:
export class MyClass {
public Test(): string {
return "Erik";
};
constructor() {
};
};
并且它通常有效...无论如何有时候它没有......是否有任何特殊原因/已知的错误?
我正在使用mybatis 3.3.0和oracle 11g作为DBMS。
答案 0 :(得分:2)
修改强>
因为您添加了oracle11g标记。我以前的答案不再有效,至少不是它不起作用的原因。所以我编辑了它。
有一些的原因我知道为什么有时它在ORACLE中不起作用。根据ORACLE文档
您无法单独截断属于群集的表。您必须截断群集,删除表中的所有行,或者删除并重新创建表。
您不能截断已启用的外键约束的父表。您必须在截断表之前禁用约束。例外情况是,如果完整性约束是自引用的,则可以截断表。
您不能截断引用分区表的父表。您必须先删除引用分区的子表。
但是您应该知道在应用程序范围内使用或TRUNCATE
命令并不理想。它应该是仅在数据库上执行的操作。原因在于文档的另一个迹象:
如果table不为空,则数据库会在表上标记UNUSABLE所有非分区索引和全局分区索引的所有分区。但是,当表被截断时,索引也会被截断,并且会为索引段计算新的高水位线。此操作等同于为索引创建新段。因此,在截断操作结束时,索引再次可用。
因此,根据索引和表的大小,这可能是一个痛苦的长操作。
此外,对于具有约束的表,truncate操作不会删除表,它将逐个删除注册表。如果您对约束有ON DELETE CASCADE
,如果没有,则会抛出错误。对于oracle数据库
另一件事需要注意的是
使用TRUNCATE TABLE语句删除行可能比使用DELETE语句删除所有行更快,尤其是在表具有大量触发器,索引和其他依赖项的情况下。
因此,如果您在该表上有任何触发器,它将无效。
关于TRUNCATE
命令的原始DOC在这里:
TRUNCATE TABLE