17,380
社区成员
发帖
与我相关
我的任务
分享
感谢!!!SQL> set long 10000 --设置格式
SQL> select dbms_metadata.get_ddl('CONSTRAINT','PK_EMP','SCOTT') from dual;
DBMS_METADATA.GET_DDL('CONSTRAINT','PK_EMP','SCOTT')
--------------------------------------------------------------------------------
ALTER TABLE "SCOTT"."EMP" ADD CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUT
E STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 214
7483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ENABLESQL> create table t1(id number check(id in(1,2)));
Table created.
SQL> insert into t1 values(3);
insert into t1 values(3)
*
ERROR at line 1:
ORA-02290: check constraint (SCOTT.SYS_C0023321) violated
SQL> show user
USER is "SYS"
SQL> select dbms_metadata.get_ddl('CONSTRAINT','SYS_C0023321','SCOTT') from dual
;
DBMS_METADATA.GET_DDL('CONSTRAINT','SYS_C0023321','SCOTT')
--------------------------------------------------------------------------------
ALTER TABLE "SCOTT"."T1" ADD CHECK (id in(1,2)) ENABLE
SQL> select constraint_name,table_name,column_name
2 from all_cons_columns
3 where constraint_name='PK_EMP';
CONSTRAINT_NAME TABLE_NAME COLUMN_NAME
-------------------- -------------------- --------------------
PK_EMP EMP EMPNO--举个例子 比如说查看SCOTT用户下EMP表上的约束
SQL> select constraint_name,constraint_type,table_name,r_constraint_name
2 from dba_constraints
3 where table_name='EMP';
CONSTRAINT_NAME C TABLE_NAME R_CONSTRAINT_NAME
-------------------- - -------------------- --------------------
FK_DEPTNO R EMP PK_DEPT --外键约束 参考DEPT表上的PK_DEPT主键约束
PK_EMP P EMP --EMP表上的主键约束
--CONSTRAINT_NAME 约束名
--C 约束类型
--TABLE_NAME 约束所在的表的名称
--R_CONSTRAINT_NAME 被参考的约束名