CREATE DATABASE会覆盖吗?

时间:2013-07-15 16:15:33

标签: sql database ddl ansi-sql

我正在编写一个简单的SQL脚本,如果它不存在则需要创建一个新数据库,或者如果数据库已经存在则保留数据库(并且不会覆盖它或者删除它的表)。 / p>

我需要这个符合ANSI标准;根据{{​​3}}:

CREATE DATABASE my_db;

...符合ANSI标准。但如果my_db已经存在,它无处可说明其行为是什么。

所以我问:我如何编写符合ANSI标准的SQL,如果它不存在则会创建my_db,或者如果它已经存在则不会对它做任何事情?提前谢谢!

2 个答案:

答案 0 :(得分:1)

如果您尝试创建已存在的数据库,则DBMS将抛出错误。确定数据库是否存在的过程,然后创建它是否因DBMS而异。在任何情况下,它都不会丢弃并重新创建数据库。

答案 1 :(得分:0)

您正在使用的命令是为每个供应商指定,并且规范(在least SQL:2008(12.1MB zip存档))没有提到实现创建的实现数据库,将详细信息留给个别供应商。

在发布CREATE DATABASE时可能会覆盖RDBMS,但根据我的个人经验不太可能。您最好的选择是使用您想要支持的每个RDBMS供应商的产品进行测试。