如何在Teradata中指定user_constraints和其他表

时间:2013-09-09 20:40:18

标签: teradata

我是Teradata的新手。我一直在使用Oracle。但是,当我尝试在Teradata中运行以下查询时,它们根本无效。如何将以下查询翻译为Teradata

select Table_name, constraint_name, constraint_type,
   r_constraint_name, Delete_rule, search_condition
 from user_constraints
  order by table_name, constraint_name;

select object_name, object_id, Object_type,
   Created, last_DDL_time, status
 from user_Objects
  order by object_name;

select table_name, column_name, data_type, data_length,
   data_precision, nullable, column_id, data_default
 from user_tab_columns
  order by table_name, column_name;

2 个答案:

答案 0 :(得分:2)

对于大多数系统视图,有几个版本,以“X”结尾的那些类似于Oracle的“user_ ”视图,没有“X”它是“all _ ”,例如:

dbc.Tables:旧版本,自TD12以来已弃用 dbc.TablesX:旧版本,自TD12以来已弃用 dbc.TablesV:推荐版本,所有数据库中的所有对象 dbc.TablesVX:推荐版本,提交用户具有任何访问权限的对象

不同的约束类型存储在Teradata的不同位置。

外键:dbc.All_ri_childrenV

表级CHECK:dbc.Table_LevelConstraintsV

列级别CHECK:dbc.ColumnsV.ColumnConstraint

NULL:dbc.ColumnsV.Nullable

主键:dbc.IndicesV.IndexType ='K'

唯一:dbc.IndicesV.IndexType ='U'

但是,您可能会注意到并非所有主/外键和唯一约束都在您的环境中实现,以避免额外的开销,因为这已经由加载过程维护(这对于Teradata来说是相同的)或任何其他数据仓库)。

答案 1 :(得分:1)

在teradata中,大多数元数据信息都保存在dbc ..

中 oracle中的

对象可能映射到dbc.tables。

从dbc.tables中选择*。

为最后一个:

  SELECT tablename, 
         columnname,
         columntype,
         columnformat,
         columnlength,
         Nullable,
         columnid,defaultvalue
    FROM dbc.columns

我希望实现user_constraints,一旦找到某些内容就会更新。

希望以上内容有所帮助。