gpt4 book ai didi

database - 如何为 GET_DDL 正确使用 CONSTRAINTS_AS_ALTER?

转载 作者:搜寻专家 更新时间:2023-10-30 23:17:39 24 4
gpt4 key购买 nike

exec dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, 'CONSTRAINTS_AS_ALTER', TRUE);

SELECT DBMS_METADATA.GET_DDL(object_type, object_name, owner) FROM all_OBJECTS WHERE
OWNER = 'USERNAME' AND OBJECT_TYPE = 'TABLE';

当我运行这些命令时,不幸的是我在每个表之后得到了 alter 语句。我更愿意为我的所有表生成 DDL,然后在其后跟 alter 语句来设置约束。目前,由于尚未创建被引用的表,因此某些表的 alter 语句运行并失败。

我见过这个命令:

select dbms_metadata.get_ddl('CONSTRAINT',constraint_name) from user_constraints; 

但是要使用它,我不需要以某种方式告诉 GET_DDL 根本不生成任何约束吗?

有没有什么方法可以让表格以正确的顺序创建?

谢谢!

最佳答案

您可以通过运行告诉 GET_DDL 不生成引用完整性约束:

exec dbms_metadata.set_transform_param(DBMS_METADATA.SESSION_TRANSFORM, 'REF_CONSTRAINTS', FALSE);

然后运行约束 DDL,但只运行 where constraint_type = 'R'。 (您不想单独运行所有约束,否则您将需要在生成外键之前生成主键,并遇到相同的依赖性问题。)

参见 here用于转换参数列表。

关于database - 如何为 GET_DDL 正确使用 CONSTRAINTS_AS_ALTER?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11021562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com