0

我正在为 codeacademy pro 密集型项目做顶点(不可审查)项目。

课程中提供了一个示例。

    db.serialize(function() {
      db.run('CREATE TABLE IF NOT EXISTS `Artist` ( ' +
              IF NOT EXISTS  NOT NULL, ' +
               '`name` TEXT NOT NULL, ' +
               '`date_of_birth` TEXT NOT NULL, ' +
               '`biography` TEXT NOT NULL, ' +
               '`is_currently_employed` INTEGER NOT NULL DEFAULT 1, ' +
               'PRIMARY KEY(`id`) )');

      db.run('CREATE TABLE IF NOT EXISTS `Series` ( ' +
               '`id` INTEGER NOT NULL, ' +
               '`name` TEXT NOT NULL, ' +
               '`description` TEXT NOT NULL, ' +
               'PRIMARY KEY(`id`) )');

      db.run('CREATE TABLE IF NOT EXISTS `Issue` ( ' +
               '`id` INTEGER NOT NULL, ' +
               '`name` TEXT NOT NULL, ' +
               '`issue_number` INTEGER NOT NULL, ' +
               '`publication_date` TEXT NOT NULL, ' +
               '`artist_id` INTEGER NOT NULL, ' +
               '`series_id` INTEGER NOT NULL, ' +
               'PRIMARY KEY(`id`), ' +
               'FOREIGN KEY(`artist_id`) REFERENCES `Artist`(`id`), ' +
               'FOREIGN KEY(`series_id`) REFERENCES `Series`(`id`) )');
    });

我了解 es6 的反引号概念,并且 sqlite3 中的反引号用于替代字符,例如空格。但是在这个例子中,我不明白为什么反引号是必要的,例如。Artist, name, 等等?

能否请您帮忙,我还在学习中。

4

1 回答 1

2

SQL 标准和 SQLite 对带引号的标识符使用双引号。SQLite 支持反引号只是为了与 MySQL 兼容。

您是正确的,这些标识符都不需要引用。

Artist(而且我假设.id列应该是的垃圾只是一个复制/粘贴错误。)

于 2018-03-18T22:58:53.283 回答