【问题标题】:Generate table creation scripts from Oracle Database 11g从 Oracle Database 11g 生成表创建脚本
【发布时间】:2021-12-18 11:15:21
【问题描述】:

如果我们要使用自增字段,Oracle 数据库 11g 中的表包含序列和触发器。
我正在使用 Oracle SQL Developer,但找不到创建合并表创建脚本的可靠方法。
是否可以为给定表创建具有以下工件的合并 DDL 脚本:

  1. 表创建
  2. 序列
  3. 触发器
  4. 外键
  5. 主键

【问题讨论】:

  • edit您的问题包括minimal reproducible example:示例表;您对该示例的预期输出;无论您是想从头开始创建表,还是想从现有实现对 DDL 进行逆向工程;以及“合并 DDL 脚本”的定义(您的意思是单个 DDL 语句还是多个语句?在后一种情况下,为什么不使用 CREATE SEQUENCE ...CREATE TABLE ...ALTER TABLE ... ADD CONSTRAINT ... 然后 @987654326 @?)。

标签: oracle oracle11g oracle-sqldeveloper


【解决方案1】:

它是我们为此目的使用的DBMS_METADATA 内置包及其GET_DDL 函数。

documentation 中的更多信息。

Oracle-base 网站上的很多示例(向下滚动到页面底部)。

对于单个表(这是您所要求的),您将运行例如

select dbms_metadata.get_ddl('TABLE', 'EMP', 'SCOTT') from dual;

【讨论】:

  • 这不包括关联的序列和触发器。有什么方法可以做到这一点?
  • 什么是“这个”? DBMS_METADATA 包包含一切。您是否阅读过有关它的文档?您可能对 GET_DEPENDENT_DDL 函数感兴趣。
  • 在 11g 中,序列和表在数据库中没有关系。将两者关联在一起的纯粹是用户代码。也就是说,通常你有一个与主键列命名相似的序列,如果这就是你为应用程序模式完成的方式,那么你可以轻松地编写一些代码来查找可能的序列名称并使用 dbms_metadata 获取 DDL。跨度>
猜你喜欢
  • 2016-02-27
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 2013-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多