是否可以在其创建语句之前定义 MySQL table 注释?
Is it possible to have a MySQL table comment defined before its create statement?
为了以更线性的方式记录 SQL 代码,我想在创建语句之前显示将要创建的 table 的描述。所以我的第一个想法是把它放在一个用户定义的变量中,我可以用它来填充注释指令,但它似乎不受支持(至少在我必须处理的 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 注释,但是它不会出现在记录的数据库结构中,或者以可怕的重复为代价。
我们也许可以使用动态 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 个语句来涵盖您想要 运行.
的完整逻辑
虽然它与问题不符,但这里有一个解决其潜在问题的方法:将 table 的描述直接放在它的创建语句旁边。
MySQL语法要求把注释附在table最后,但是如果table有很多字段,每个字段声明在一行或几行,那么table 注释可以在看到它的声明开始时快速发送。
现在,可以很容易地创建一个 table 并将其注释作为唯一的附加语句,然后将其更改为包含它应该包含的字段。
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',
;
为了以更线性的方式记录 SQL 代码,我想在创建语句之前显示将要创建的 table 的描述。所以我的第一个想法是把它放在一个用户定义的变量中,我可以用它来填充注释指令,但它似乎不受支持(至少在我必须处理的 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 注释,但是它不会出现在记录的数据库结构中,或者以可怕的重复为代价。
我们也许可以使用动态 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 个语句来涵盖您想要 运行.
的完整逻辑虽然它与问题不符,但这里有一个解决其潜在问题的方法:将 table 的描述直接放在它的创建语句旁边。
MySQL语法要求把注释附在table最后,但是如果table有很多字段,每个字段声明在一行或几行,那么table 注释可以在看到它的声明开始时快速发送。
现在,可以很容易地创建一个 table 并将其注释作为唯一的附加语句,然后将其更改为包含它应该包含的字段。
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',
;