我正在编写一个简单的 SQL 脚本,如果它不存在,则需要创建一个新数据库,或者如果它已经存在,则单独保留该数据库(而不是覆盖它或 drop-n-swap 它的表)。
我需要它符合 ANSI;根据W3 学校:
CREATE DATABASE my_db;
...符合 ANSI 标准。my_db
但是如果已经存在,它没有任何地方说明它的行为是什么。
所以我问:我如何编写符合 ANSI 的 SQL,my_db
如果它不存在则创建,或者如果它已经存在则不对其做任何事情?提前致谢!
如果您尝试创建一个已经存在的数据库,您的 DBMS 将抛出错误。确定数据库是否存在,如果不存在则创建的过程因 DBMS 而异。在任何情况下,它都不会删除并重新创建数据库。
您使用的命令是按 vendor 指定的,并且规范(至少 SQL:2008(12.1MB zip 存档))没有提到创建数据库的实现是什么,将细节留给各个供应商。
可能有一个 RDBMS 在发布时可能会覆盖,CREATE DATABASE
但根据我个人的经验,这不太可能。您最好的选择是使用您打算支持的每个 RDBMS 供应商的产品进行测试。