"如果不存在则创建表" - 如何检查模式?

Joo*_*kka 11 sql database h2 create-table

是否有(或多或少)标准方法不仅检查名为mytableexists 的表是否存在,还检查其模式是否与它应该是什么类似?我正在试验H2数据库,并且

CREATE TABLE IF NOT EXISTS mytable (....)
Run Code Online (Sandbox Code Playgroud)

声明显然只检查表的名称.如果有一个具有给定名称但具有不同模式的表,我希望得到一个例外.

isa*_*pir 5

SELECT  *
FROM    INFORMATION_SCHEMA.TABLES
WHERE   TABLE_NAME      = 'TableName'
    AND TABLE_SCHEMA    = 'public'
Run Code Online (Sandbox Code Playgroud)


Thi*_*ilo 1

我不知道有任何数据库本身具有此功能。

还没有使用过它(用我自己的代码来做到这一点),但也许Apache DdlUtils可以提供帮助。

这是一件棘手的事情,特别是如果您希望它与不同的数据库供应商一起工作。此外,对于模式需要多么相似才能通过可能存在不同的意见。列名、列顺序、列类型、主键定义:当然可以。但是约束、约束名称、表空间定义等等又如何呢?