当前位置: 首页 > 面试题库 >

Oracle创建表(如果不存在)

韩弘壮
2023-03-14
问题内容

任何人都可以指出我仅在数据库中当前不存在表时才能使用的正确语法吗?

我目前正在编程Java GUI,以便连接到Oracle并在数据库上执行语句,我想知道是否将其实现为Java约束还是SQLPlus约束。


问题答案:

通常,检查表是否存在没有多大意义,因为不应在运行时创建对象,而应用程序应知道在安装时创建了哪些对象。如果这是安装的一部分,那么您应该知道过程中任何时候存在哪些对象,因此您无需检查表是否已存在。

但是,如果您确实需要,

  • 您可以尝试创建表并捕获`ORA-00955:现有对象已使用名称”异常。
  • 您可以查询USER_TABLES(或ALL_TABLESDBA_TABLES取决于是否要创建其他用户,并在数据库中的特权拥有的对象)来检查,看看表是否已经存在。
  • 如果不存在,您可以尝试在创建表之前删除该表并捕获“ ORA-00942:表或视图不存在”异常。


 类似资料:
  • 问题内容: 我很沮丧,我不知道该怎么做。 基本上,我只想创建一个表,但是如果它存在,则需要将其删除并重新创建,而不是将其截断,但是如果不存在,则可以创建它。 有人可以帮忙吗? 谢谢乔治 问题答案: 放在tablename您的发言之前。 该语句将删除该表(如果存在),但如果不存在则不会引发错误。

  • 问题内容: 我正在尝试创建表(如果尚不存在)。我目前正在检查它是否首先存在,并且该查询是否不返回任何内容,然后插入。有没有一种方法可以只检查同一条语句,因此我不必将其分解为单独的查询? 这就是我目前所拥有的。 这是我要的东西。 问题是,您不能在语句中添加一个。 问题答案: 是的,Oracle没有该功能真是可惜。我敢肯定会有一天。在此之前,如果您想编写一个PL / SQL包装器,为什么不那样做:

  • 问题内容: 您可以给MS Access等同于MySQL“如果不存在则创建表…”吗? 更新 像这样 也将是合适的 问题答案: 对于SQL DDL代码,答案是否定的。ACE / Jet SQL没有任何流控制语法,并且ACE / Jet只能执行一个SQL语句。是的,没错:ACE / Jet不支持程序代码:(

  • 问题内容: 我正在为Oracle数据库编写一些迁移脚本,并希望Oracle具有类似于MySQL的构造。 具体来说,每当我想在MySQL中删除表时,我都会做类似的事情 这样,如果表不存在,则不会产生错误,并且脚本可以继续。 Oracle有类似的机制吗?我意识到我可以使用以下查询来检查表是否存在 但是将其与a捆绑在一起的语法使我逃脱了。 问题答案: 最好和最有效的方法是捕获“找不到表”异常:这样可以避

  • 问题内容: 我正在使用PostgreSQL,并且是SQL的初学者。我正在尝试从查询创建表,并且如果运行: 它工作正常。但是然后如果我添加“如果不存在”并运行: 使用完全相同的查询,我得到: 有什么办法吗? 问题答案: CREATE TABLE AS被认为是与普通CREATE TABLE 分开的语句,并且 直到Postgres版本9.5 (请参阅changelog条目)不支持子句 为止 。(请务必查

  • 问题内容: 创建新表时遇到一些问题。当我使用CREATE TABLE命令时,我的新表将按应有的形式出现,但是当我退出活动时,应用程序崩溃,并且在logcat中得到了一个表已经存在的信息。如果我使用CREATE TABLE IF NOT EXISTS不存在,则不会形成新表,而只是将新的数据行添加到上一个表中,并且不会崩溃。这有什么问题?我想添加没有它的表,让我已经存在,并且我想要添加它而不向其他表添