我在oracle中使用以下查询创建了我的 TEST_TABLE
表
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
上获取确切的系统生成的检查约束名称 .
我试图使用下面的查询获取数据,但由于搜索条件是长数据类型列,它是在错误下面的trowing
select * from user_constraints where TABLE_NAME ='TEST_TABLE'; WHERE TABLE_NAME ='TEST_TABLE'和TO_LOB(search_condition)LIKE'%“MYVAL1”IS NOT NULL%'
错误:ORA-00932:不一致的数据类型:预期 - 得到LONG 00932. 00000 - "inconsistent datatypes: expected %s got %s" *原因:
*动作:行错误:23列:6任何线索?
1 回答
有两种方法 . 第一个(推荐) - 在创建约束时为其赋予名称 . 第二 - 在
ALL_CONS_COLUMNS
(或USER_CONS_COLUMNS
)系统视图中搜索 .你需要这样的东西:
见文档:https://docs.oracle.com/cloud/latest/db121/REFRN/refrn20045.htm#REFRN20045