gpt4 book ai didi

oracle - 如何重命名 Oracle 中的表,以便更新所有外键、约束、触发器和序列并保留任何现有数据?

转载 作者:行者123 更新时间:2023-12-04 01:24:03 26 4
gpt4 key购买 nike

我需要在 Oracle 中重命名一个表,但我想确保引用该表的任何外键、约束、触发器和序列都更新为使用新名称。

我如何确定我没有破坏任何东西?

请注意,我想保留表中包含的任何现有数据。

最佳答案

如果你

ALTER TABLE old_table_name
RENAME TO new_table_name;

所有现有的约束(外键和其他约束)和触发器都将引用新重命名的对象。序列与表没有关系,因此不会对序列产生影响(尽管如果您的意思是在表的触发器中引用序列,则触发器将在重命名后继续引用相同的序列)。但是,您编写的任何引用旧表名的存储过程都需要更新以引用新表名。

现在,虽然约束和触发器将继续正常工作,但它们将保留其原始名称。如果您希望在表名之后保留这些对象的命名约定,则需要做更多的工作。例如,如果您想要在表 FOO 上插入触发器之前的行级待命名 TRG_BI_FOO然后将表重命名为 BAR ,您需要显式更改触发器以更改其名称
ALTER TRIGGER trg_bi_foo
RENAME TO trg_bi_bar;

同样,您需要重命名约束和索引
ALTER TABLE bar
RENAME CONSTRAINT pk_foo TO pk_bar;

关于oracle - 如何重命名 Oracle 中的表,以便更新所有外键、约束、触发器和序列并保留任何现有数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279492/

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