是否可以在其create语句之前定义一个MySQL表注释?

时间:2018-11-19 15:00:31

标签: mysql create-table commenting

为了以更线性的方式记录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 :(得分:1)

我们也许可以使用动态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条语句来覆盖要运行的完整逻辑。

答案 1 :(得分:0)

尽管它与问题不符,但这是解决其潜在问题的一种方法:将表的描述直接放在其创建语句旁边。

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',
  ;