Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在oracle中获取系统生成的表列检查约束名称_Oracle - Fatal编程技术网

如何在oracle中获取系统生成的表列检查约束名称

如何在oracle中获取系统生成的表列检查约束名称,oracle,Oracle,我在oracle中使用下面的查询创建了我的TEST_表表 CREATE TABLE "PK"."TEST_TABLE" ( "MYNAME" VARCHAR2(50), "MYVAL1" NUMBER(12,0), "MYVAL2" NUMBER(12,0), "MYVAL3" NUMBER(12,0) NOT NULL, CHECK ("MYVAL1" IS NOT NULL) DEFERRABLE ENABLE NOVALI

我在oracle中使用下面的查询创建了我的
TEST_表

  CREATE TABLE "PK"."TEST_TABLE" 
   (    "MYNAME" VARCHAR2(50),  
      "MYVAL1" NUMBER(12,0),
      "MYVAL2" NUMBER(12,0),
      "MYVAL3" NUMBER(12,0) NOT NULL,
     CHECK ("MYVAL1" IS NOT NULL) DEFERRABLE ENABLE NOVALIDATE
   ) SEGMENT CREATION IMMEDIATE 
  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
  TABLESPACE "SYSTEM" ;
在此之后,我想删除应用于MYVAL1列的检查约束

为此,首先需要获取列MYVAL1上的检查约束名称。我可以运行alter命令来删除该约束

那么,如何在列
MYVAL1
上获取准确的系统生成的检查约束名称呢

我试图使用下面的查询获取数据,但由于搜索条件是长数据类型列,所以出现了下面的错误

从用户_约束中选择*TABLE_NAME='TEST_TABLE'; 其中TABLE_NAME='TEST_TABLE' 而TO_LOB(搜索条件)如“%”“MYVAL1”不为空%'

错误: ORA-00932:不一致的数据类型:应为-变长 93200000-“不一致的数据类型:应为%s获得%s” *原因:
*行动: 第23行第6列出错 有线索吗?

有两种方法。第一个(推荐)-在创建约束时为其命名。第二个-在
所有列
(或
用户列
)系统视图中搜索。
你需要这样的东西:

select constraint_name
  from all_cons_columns
 where table_name = 'TEST_TABLE'
   and owner = 'PK'
   and column_name = 'MYVAL1'
请参阅文档:

有两种方法。第一个(推荐)-在创建约束时为其命名。第二个-在
所有列
(或
用户列
)系统视图中搜索。
你需要这样的东西:

select constraint_name
  from all_cons_columns
 where table_name = 'TEST_TABLE'
   and owner = 'PK'
   and column_name = 'MYVAL1'

请参阅文档:

当您知道3个不同的数据库只与Oracle相关时,为什么要对其进行标记?除了Oracle之外,是否还有理由对MySQL和SQL Server进行标记?看起来这是一个Oracle特有的问题。重复的:也许?@xQbert-我在这里查找特定的列检查约束名称,该名称是Oracle在运行alter脚本后生成的。当您知道3个不同的数据库仅与Oracle相关时,为什么要对其进行标记?是否有标记的原因
MySQL
SQL Server
以及
Oracle
?看起来这是一个Oracle特有的问题。重复:也许?@xQbert-这里我要查找Oracle在运行alter脚本后生成的特定列检查约束名称。