Можно ли определить комментарий к таблице MySQL перед ее оператором create? - PullRequest
0 голосов
/ 19 ноября 2018

Чтобы документировать код SQL более линейно, я хотел, чтобы появилось описание таблицы, которая будет создана перед оператором создания.Поэтому моя первая идея заключалась в том, чтобы поместить это в пользовательскую переменную, которой я мог бы заполнить инструкцию комментария, но она, кажется, не поддерживается (по крайней мере, в версии 5.6, с которой мне приходится иметь дело):

set @description = 'The following table is a useless dummy test.';
drop table if exists `test`;
create table `test` (dummy int) comment @test; -- syntax error
show table status where name='test';

Есть ли другой способ достичь начальной цели?Конечно, всегда возможно использовать -- комментарии SQL перед оператором создания, но тогда они не появятся в записанной структуре базы данных или ценой ужасного дублирования.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Хотя это не соответствует вопросу, здесь есть решение его основной проблемы: иметь описание таблицы непосредственно рядом с оператором создания.

Синтаксис MySQL требует, чтобы комментарий был прикреплен кв конце таблицы, но если в таблице много полей, каждое из которых объявлено в одной или нескольких строках, то комментарий к таблице можно быстро отправить сразу же после начала объявления.

Теперь можно легко создатьтаблица с комментарием в качестве единственного присоединенного оператора, затем измените его, чтобы включить поля, которые он должен содержать.

CREATE TALBE `test` COMMENT 'Informative description';
ALTER TABLE test
  ADD id
    INT UNSIGNED NOT NULL AUTO_INCREMENT
    COMMENT 'Description of the id field',
  ADD data
    BLOB
    COMMENT 'Description of the data field',
  ;
0 голосов
/ 19 ноября 2018

Мы могли бы сделать это, используя динамический SQL:

SET @description = 'The following table is a useless dummy test.';
SET @sql = CONCAT('CREATE TABLE test (dummy int) COMMENT=''', @description, '''');
PREPARE stmt FROM @sql;
EXECUTE stmt;

Обратите внимание, что каждое подготовленное утверждение является именно этим;одно заявление.Таким образом, чтобы сделать это из командной строки, вам может понадобиться 3 оператора, чтобы охватить всю логику, которую вы хотите запустить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...