ORACLE IsAnyConstraint 和 IsAnyIndex 方法调整 返回

SqlSugar 处理完成
18 272

方法 IsAnyConstraint 无法识别索引和主键约束,索引也返回 true 导致 DropConstraint 报错,如果直接使用 DropIndex 删除主键索引时又提示  ORA-02429: 无法删除用于强制唯一/主键的索引。

现提供一段SQL用于判断是主键约束还是索引,以便能准确调用 DropConstraint 或者 DropIndex 


SELECT  

NVL2((SELECT INDEX_NAME FROM ALL_INDEXES WHERE TABLE_NAME = 'LINE_INFO' AND INDEX_NAME='LINE_INFO_PK' AND OWNER = 'SAS' ),1,0) 

+

NVL2((SELECT CONSTRAINT_NAME FROM ALL_CONSTRAINTS WHERE TABLE_NAME = 'LINE_INFO' AND CONSTRAINT_NAME='LINE_INFO_PK' AND OWNER = 'SAS'),2,0) AS ROWCOUNT

FROM DUAL;


返回的内容=3就是主键约束     =2 普通约束      =1就是索引     =0就是不存在   

看看是否对 IsAnyConstraint 和 IsAnyIndex 的识别有所帮助,谢谢。




热忱回答18

  • fate sta fate sta VIP0
    1个月前

    这个我研究一下,或者你直接pull代码给我

    0 回复
  • 小污云 小污云 VIP0
    1个月前

    @fate sta:代码我拉了,怕改的有问题,没有 IsAnyConstraintSql  什么的

    0 回复
  • 小污云 小污云 VIP0
    1个月前

    @fate sta:还是你来处理吧,我这只是提供个思路,主要就是 IsAnyConstraint 和 IsAnyIndex 能准确识别就好了,这样能调用对应的 Drop 方法

    0 回复
  • 小污云 小污云 VIP0
    1个月前

    还有那个 DropIndex 的两个重载,DropIndex(index_name)  和 DropIndex(index_name, table_name) 

    前面生成的SQL是 DROP INDEX index_name;   后面生成的SQL是 DROP INDEX index_name ON table_name; 

    后面这个语法在ORACLE是不支持的,所以建议在ORACLE下两个重载都生成 DROP INDEX index_name; 这个语句,也防止大家用了某个数据库(第二个重载)后面切换到ORACLE之后报错的问题

    0 回复
  • fate sta fate sta VIP0
    1个月前

    @小污云:重写一下就行了

    0 回复
  • 小污云 小污云 VIP0
    1个月前

    @fate sta:推的时候提示 

    remote: Permission to DotNetNext/SqlSugar.git denied to shaohuatsou.

    fatal: unable to access 'https://github.com/DotNetNext/SqlSugar.git/': The requested URL returned error: 403

    Pushing to https://github.com/DotNetNext/SqlSugar.git


    0 回复
  • fate sta fate sta VIP0
    1个月前

    用gitee吧,github可能网络不好

    0 回复
  • 小污云 小污云 VIP0
    1个月前

    @fate sta:已经推了

    0 回复
  • fate sta fate sta VIP0
    1个月前

    image.png


    这2个文件,不应该改的,只改Oracle,如果没有可以重写方法

    0 回复
  • fate sta fate sta VIP0
    1个月前

    只改这一个

    image.png

    0 回复
  • fate sta fate sta VIP0
    1个月前

    关闭后,败了重新推送。不要加空格和格式化。

    0 回复
  • 小污云 小污云 VIP0
    1个月前


    @fate sta不要加空格和格式化 是什么意思,能举个例子吗?

    0 回复
  • 小污云 小污云 VIP0
    1个月前

    @fate sta:我又提交了一次,你看看这次可以吗?

    0 回复
  • 小污云 小污云 VIP0
    1个月前

    @fate sta:我看代码已经合并 什么时候可以更新我测试下?

    0 回复
  • fate sta fate sta VIP0
    1个月前

    @小污云:更新最新预览版本

    0 回复
  • @fate sta:已升级至版本5.1.4.167-preview28 打印SQL语句还是未修复之前的

    0 回复
  • @fate sta:这个问题什么时候处理一下

    0 回复
  • @fate stapreview31已经测试没问题了,问题可以关闭了,谢谢

    0 回复