oracle - ORACLE 数据库 - 为什么 SYS 用户可以删除表但不能删除列?
问题描述
我正在使用 Oracle 19c 学习 PLsql。我想知道 - 为什么可以在表格sys user
中删除tables
但不具体?columns
我找到了这种解决方法,您可以在其中为特定的 SCHEMA 创建表的副本,删除这个新创建的表中的列,删除原始表,最后创建另一个没有 SCHEMA/USER ROLE 的(复制的)表副本。
是否有另一种,比方说更顺畅的方式来实现这一点?或者甲骨文以这种方式实施它有什么具体原因吗?
谢谢。
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.
解决方案
“为了保持数据字典的完整性,SYS 模式中的表只能由数据库操作。任何用户或数据库管理员都不应修改它们。您不得在 SYS 模式中创建任何表。”
https://docs.oracle.com/database/121/ADMQS/GUID-CF1CD853-AF15-41EC-BC80-61918C73FDB5.htm#ADMQS12003
推荐阅读
- sql - 如何使用 Oracle REGEXP 替换未放置在模式之间的单词和模式内的不同单词?
- .net-core - 在区域控制器索引中找不到页面错误
- git - 当我引入一个错误并能够回到我之前的提交时,我想保存我的工作。我应该如何用 git 解决这个问题?
- php - 使用 php exec 检查 npm 插件是否存在
- forth - 用数字填充数组的问题
- python - 使用 Mechanicalsoup 导航多个页面/表单
- django - Bootstrap 4 选择表单字段不适用于 django
- java - 合并多个 if 语句
- matlab - Matlab 应用程序设计器绘图 app.UIAxes 存在问题
- function - 生成交叉和的按钮