如何查看user_constraints里的search_condiction

本文介绍了如何在Oracle数据库中创建全局临时表并插入数据,通过示例展示了使用SQL语句进行表结构定义及数据填充的过程,最后查询了包含特定条件的数据记录。
QL> create global temporary table gtt_user_cons
  2  (constraint_name    varchar2(30),
  3   search_condition   clob);

Table created.

SQL> insert into gtt_user_Cons
  2  select constraint_name, to_lob(search_condition)
  3  from user_Constraints;

7 rows created.

SQL> col search_condition format a40

SQL> select * from gtt_user_Cons
  2  where search_condition like '%NOT NULL%';

CONSTRAINT_NAME                SEARCH_CONDITION
------------------------------ ----------------------------------------
SYS_C0045146                   "EMPNO" IS NOT NULL
SYS_C0052991                   "MIG_ID" IS NOT NULL
SYS_C0052992                   "VRIEME" IS NOT NULL
SYS_C0052988                   "MIG_ID" IS NOT NULL
SYS_C0052989                   "VRIEME" IS NOT NULL

SQL>

在达梦数据库中,`user_tab_columns` 表通常用于存储用户表的列信息,而 `user_constraints` 表则记录了表级别的约束信息,包括外键、唯一性和主键等。如果你想通过这两个表来间接实现类似的功能,可以结合查询。 例如,你可以先从 `user_tab_columns` 获取列名、是否允许为空 (`nullable`) 和是否为主键 (`constraint_type`) 的信息,然后使用 `user_constraints` 来确定哪些列是通过主键约束(`CONSTRAINT_TYPE = 'PRIMARY KEY'`)设置的。这需要注意的是,达梦可能使用不同的字段名称来表示这些信息。 以下是可能的SQL查询示例: ```sql WITH columns_info AS ( SELECT column_name, nullable, constraint_type FROM sys.user_tab_columns WHERE table_schema = (SELECT database_name) AND table_name = #{tableName} ), keys_info AS ( SELECT column_name FROM sys.user_constraints JOIN sys.user_table_columns ON user_constraints.constraint_table_name = user_table_columns.table_name WHERE user_table_columns.table_schema = (SELECT database_name) AND user_table_columns.table_name = #{tableName} AND constraint_type = 'PRIMARY KEY' ) SELECT c.column_name, CASE WHEN c.nullable = 'NO' THEN '1' ELSE NULL END AS is_required, CASE WHEN EXISTS(SELECT 1 FROM keys_info k WHERE k.column_name = c.column_name) THEN '1' ELSE '0' END AS is_pk, c.ordinal_position AS sort, c.column_comment, CASE WHEN c.constraint_type = 'UNIQUE' THEN '1' ELSE '0' END AS is_unique, c.data_type AS column_type FROM columns_info c LEFT JOIN keys_info k ON c.column_name = k.column_name ORDER BY c.ordinal_position; ``` 这个查询首先分别从两个表中提取信息,然后在外部查询中关联它们并检查主键约束。请注意,这假设`is_required` 列依赖于 `nullable` 字段表示是否允许为空,`is_unique` 列基于`constraint_type` 是否为`UNIQUE`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值