WEB开发网
开发学院数据库Oracle 利用查询来创建新表的限制 阅读

利用查询来创建新表的限制

 2009-06-01 13:16:12 来源:WEB开发网   
核心提示: 限制条件三:不能够为新表指定表空间,在正常情况下,利用查询来创建新表的限制(2),利用Create创建表的时候,数据库管理员可以为表指定其所属的表空间,再利用Update关键字结合子查询来更新这些列的数据即可,虽然这么操作比较麻烦一点,如果不指定的话,则其默认情况下采用的是当前用户的默认表

限制条件三:不能够为新表指定表空间。

在正常情况下,利用Create创建表的时候,数据库管理员可以为表指定其所属的表空间。如果不指定的话,则其默认情况下采用的是当前用户的默认表空间。但是在使用查询来创建新表的时候,在语句中不能够为新表指定表空间。如使用TableSpace关键字为其指定表空间的话,则系统会提示错误信息:SQL命令未正确结束。注意这并不是说这个SQL语句哪里有问题,而是指不能够在这种方式下为新表指定表空间。从这里也可以看出,Oracle数据库系统的错误提示还是有模棱两可的地方,还需要改进,即错误信息要能够反映出真实的问题所在。因为不能够为新表指定表空间,此时其所属的表空间就是执行这条语句的用户的默认表空间。

那么数据库管理员就可以通过采用不同的用户来为新表指定所属的表空间。如现在数据库管理员要想把这个新表放置在sales表空间下。那么就可以新建一个用户或者利用原有的用户,先把这个用户的默认表空间设置为sales。然后再利用这个用户来执行这条语句(必要的时候可能需要调整这个用户的权限)。通过这种方式就可以控制这种形式创建新表所属的表空间。俗话说,条条道路通罗马。既然不能够利用直接的方式来为这新表设定表空间,那么就只能够采取这曲线救国的方法了。只要最终能够达到预计的目的就好。

限制条件四:某些数据类型的数据不能够导入。

如果在查询结果中,带有大对象数据类型或者Long数据类型的数据,则这个语句就会执行不成功。换句话说,如果采用子查询来创建新表,则在Select语句中就不能够包含大对象数据类型或者Long数据类型。这是Oracle数据库的一种强制性规定。如果确实需要这些数据的话,则可以采用其它的方式来解决。如先不导入这些类型的数据。先利用子查询把表建立起来。等新表建立完成后。再利用Update关键字结合子查询来更新这些列的数据即可。虽然这么操作比较麻烦一点,但是总比不能够实现要好。

Tags:利用 查询 创建

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接