Комментарий таблицы MySQL, охватывающий несколько строк - PullRequest
0 голосов
/ 03 октября 2018

При создании таблицы в MySQL мы можем указать комментарий.

Кто-нибудь знает, как передать строку в COMMENT = через несколько строк?

Я пробовалиспользуя локальную переменную, которая является результатом CONCAT, а также пытался использовать строковый литерал синтаксиса, такой как 'foo ' 'bar ' 'baz'

Например:

CREATE TABLE foo (
    id INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (id)
) COMMENT = 'some really long string that we want to span multiple lines instead of being limited to a single line';

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Чтобы согласиться с ответом @ BillKarwin: если вы хотите использовать несколько строк для создания комментария, просто сделайте так:

CREATE TABLE foo
(
    foo_id int primary key auto_increment,
    foo_name varchar(255)
)
COMMENT = 'this is a 
multi-line comment'

К сожалению, вы, похоже, не можете ничего сделатьконкатенации в конструкции вашего комментария (чтобы разделить фактический DDL на несколько строк, при этом не разрывая строку в реальном DDL).Например, это не возможно:

CREATE TABLE foo(foo_id INT PRIMARY KEY AUTO_INCREMENT) 
COMMENT = CONCAT('multi-line', 
    ' comment'

Конечно, если вы обращаетесь к MySQL через клиентский язык (PHP или Python или что-то еще), вы можете создать строку как угодно.Вы хотите:

ddl = 
'''
CREATE TABLE `foo` (
    `foo_id` int PRIMARY KEY AUTO_INCREMENT
)''' + \ 
'''COMMENT='This is a multi-line ''' + \
'''comment''''
0 голосов
/ 03 октября 2018

Используйте \n, если вы хотите вставить новую строку.

CREATE TABLE `foo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='some really long string\nthat we want to span multiple lines\ninstead of being limited to a single line'

Комментарий по-прежнему будет отображаться как одна длинная строка, если вы используете SHOW CREATE TABLE для просмотра.Этот оператор возвращает точный синтаксис, необходимый для воссоздания таблицы, поэтому, если он требует использования \n для ввода новых строк, это то, что он покажет.

Но вы можете вывести символы новой строки как реальные разрывы строк, еслиВы запрашиваете метаданные таблицы из INFORMATION_SCHEMA:

mysql> select * from information_schema.tables where table_name='foo'\G
*************************** 1. row ***************************
  TABLE_CATALOG: def
   TABLE_SCHEMA: test
     TABLE_NAME: foo
     TABLE_TYPE: BASE TABLE
         ENGINE: InnoDB
        VERSION: 10
     ROW_FORMAT: Compact
     TABLE_ROWS: 0
 AVG_ROW_LENGTH: 0
    DATA_LENGTH: 16384
MAX_DATA_LENGTH: 0
   INDEX_LENGTH: 0
      DATA_FREE: 0
 AUTO_INCREMENT: 1
    CREATE_TIME: 2018-10-02 23:37:57
    UPDATE_TIME: NULL
     CHECK_TIME: NULL
TABLE_COLLATION: utf8mb4_general_ci
       CHECKSUM: NULL
 CREATE_OPTIONS: 
  TABLE_COMMENT: some really long string
that we want to span multiple lines
instead of being limited to a single line
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...