ORACLE数据库-为什么SYS用户可以删除表但不能删除列?

问题描述 投票:0回答:2

我正在使用Oracle 19c学习PLsql。我想知道-为什么sys user可以删除表中的tables而不是特定的columns?我找到了this workaround,您可以在其中为特定的SCHEMA创建表的副本,在此新创建的表中删除该列,删除原始表,最后在没有SCHEMA / USER ROLE的情况下创建(复制的)表的另一个副本。

还有另一种,让我们说出一种更平滑的方法来完成此操作吗?还是Oracle以这种方式实现它的任何特定原因?

谢谢。

SQL> SHOW USER;
USER is "SYS"
________________________________________

SQL> ALTER TABLE employees DROP (gender);
ALTER TABLE employees DROP (gender)
*
ERROR at line 1:
ORA-12988: cannot drop column from table owned by SYS

_______________________________________

SQL> DROP TABLE employees;
Table dropped.
oracle plsql privileges
2个回答
1
投票

“为了维护数据字典的完整性,SYS模式中的表仅由数据库操作。它们绝不能由任何用户或数据库管理员修改。您不得在SYS模式中创建任何表。”

https://docs.oracle.com/database/121/ADMQS/GUID-CF1CD853-AF15-41EC-BC80-61918C73FDB5.htm#ADMQS12003


0
投票

尝试按此顺序:

ALTER TABLE table_name DROP COLUMN column_name;
© www.soinside.com 2019 - 2024. All rights reserved.