SQL:在数据库和已存在的表上使用create是不是很糟糕?

时间:2017-06-24 11:28:23

标签: mysql sql node.js database

我想在我的Nodejs服务器上创建一个数据库初始化的脚本,该脚本将在每次初始化服务器时运行,也就是说,如果它们尚未创建,则将创建所有必需的数据库和表。 所以,如果我只是做了类似的事情:

CREATE DATABASE newtest;
USE newtest;
CREATE TABLE people(id INT(11) auto_increment PRIMARY KEY, name VARCHAR(140) NOT NULL);
可能是坏的,反对每次检查数据库或表是否存在,只有在没有时才创建它。我的意思是,只要它不会杀死我的脚本并且只返回错误作为参数并继续它很好,不是吗?想确定。

由于

2 个答案:

答案 0 :(得分:0)

我认为以这种方式创建数据库通常是一种不好的做法。

创建数据库不一定是一项微不足道的操作。需要为表分配空间,需要生成和更新系统表。此外,还可以在数据库级别进行优化。它不应该是一个原子操作。

通常,应用程序将访问一个或少数几个数据库。应在应用程序开始运行之前设置和定义这些数据库。换句话说,环境应该为应用程序做好准备。

这是否意味着在应用程序代码中创建数据库总是错误?不会。但这样做应该非常罕见,并且只是非常谨慎。

答案 1 :(得分:0)

没关系,事实上,大多数db框架(如LiquibaseSpring Data JPA)在db初始化/应用程序启动期间都使用这种方法。

如果您想使用自己的自定义脚本手动执行此操作,则可以使用IF NOT EXISTS语法,例如:

CREATE TABLE IF NOT EXISTS `schema`.`Employee` (
id int
);