gpt4 book ai didi

oracle - 我可以删除/添加属性而不产生任何后果吗? Oracle 对象类型

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

我有一个带有ATTRIBUTE varchar2(200)OBJECT_TYPE。还有许多其他对象引用了这个对象。我需要将属性的长度缩短为 varchar2(50)。我知道我不能直接这样做,所以我找到了这种方式:

ALTER TYPE CUSTOMER DROP ATTRIBUTE name INVALIDATE;
ALTER TYPE CUSTOMER ADD ATTRIBUTE name varchar2(50) CASCADE;

问题是在删除/创建属性后是否有任何可能被破坏的东西?在 DROP 语句中使用 INVALIDATE 选项而不是 CASCADE 是否正确?我不想丢失任何东西 - 关系或数据。

最佳答案

是否有以下未使用的原因:

ALTER TYPE CUSTOMER MODIFY ATTRIBUTE name VARCHAR2(50);

我在使用类型和删除属性时遇到了兼容性问题,尤其是在使用类型定义表和数据的情况下。这是我避免将表和 View 基于数据类型的原因之一。长度的变化会使表和关联数据超过 50 的任何行无效。如果其他对象只是类型并且不在 View 和表中使用,那么上面的 alter type 应该可以正常工作。您可能需要重新编译任何类型。请记住,类型变得越来越严格,以及它可能如何影响任何相关数据。

关于oracle - 我可以删除/添加属性而不产生任何后果吗? Oracle 对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12142365/

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