在 MogDB 等数据库中,Create Schema 是一项正常的操作,然而对于Oracle数据库,则大不相同。Oracle 数据库的 Schema 是和用户绑定的,当一个 user 被创建时,Schema 随之创建。
在 Oracle 7 之前,Oracle 数据库中没有独立的 Create Schema 命令。
Create Schema 的引入
在 Oracle database 7 版本中,Create Schema 作为一个独立的语句被引入,但是其作用和其他数据库中的全然不同。
在 Oracle 数据库中 CREATE SCHEMA 语法结构树如下所示:

示例语法
下面的语句为订单输入用户 mogdb,创建了表new_product,创建了视图new_product_view,并将new_product_view上的SELECT对象权限授予人力资源用户hr。
CREATE SCHEMA AUTHORIZATION mogdb
CREATE TABLE new_product
(color VARCHAR2(10) PRIMARY KEY, quantity NUMBER)
CREATE VIEW new_product_view
AS SELECT color, quantity FROM new_product WHERE color = 'RED'
GRANT select ON new_product_view TO hr;
也就是说,CREATE SCHEMA 在指定的用户模式下,创建对象,在该语句的范围封锁内,所有的 DDL 语句成为一个事务,统一提交或者回滚。
为什么会有这个命令呢?
这是因为 DDL 语句在 Oracle 数据库中会隐式提交,那么如何做到像数据操作那样可回滚呢,CREATE SCHEMA就是为此而设计的。其本质上是通过设置还原点,之后执行一系列的建表、建视图和赋权语句都可以被批量回退。
应用
CREATE SCHEMA 语句在生产实践中,几乎看不到应用。
最后修改时间:2023-02-13 16:37:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




