ORACLE 数据库 - 为什么 SYS 用户可以删除表但不能删除列?
ORACLE Database - Why SYS User can drop tables but not columns?
我正在使用 Oracle 19c 学习 PLsql。我想知道 - 为什么 sys user
可以删除 tables
但不能在 table 中删除特定的 columns
?我发现 this workaround,在其中为特定 SCHEMA 创建 table 的副本,删除这个新创建的 table 中的列,删除原始 table,最后创建没有 SCHEMA/USER 角色的 (copied)-table 的另一个副本。
是否有另一种更流畅的方法来完成此操作?或者甲骨文以这种方式实施它有什么具体原因吗?
谢谢。
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.
"To maintain the integrity of the data dictionary, tables in the SYS schema are manipulated only by the database. They should never be modified by any user or database administrator. You must not create any tables in the SYS schema."
https://docs.oracle.com/database/121/ADMQS/GUID-CF1CD853-AF15-41EC-BC80-61918C73FDB5.htm#ADMQS12003
尝试按以下顺序排列:
ALTER TABLE table_name DROP COLUMN column_name;
如果 table 有数据,则它不起作用。
我正在使用 Oracle 19c 学习 PLsql。我想知道 - 为什么 sys user
可以删除 tables
但不能在 table 中删除特定的 columns
?我发现 this workaround,在其中为特定 SCHEMA 创建 table 的副本,删除这个新创建的 table 中的列,删除原始 table,最后创建没有 SCHEMA/USER 角色的 (copied)-table 的另一个副本。
是否有另一种更流畅的方法来完成此操作?或者甲骨文以这种方式实施它有什么具体原因吗?
谢谢。
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.
"To maintain the integrity of the data dictionary, tables in the SYS schema are manipulated only by the database. They should never be modified by any user or database administrator. You must not create any tables in the SYS schema."
https://docs.oracle.com/database/121/ADMQS/GUID-CF1CD853-AF15-41EC-BC80-61918C73FDB5.htm#ADMQS12003
尝试按以下顺序排列:
ALTER TABLE table_name DROP COLUMN column_name;
如果 table 有数据,则它不起作用。