【发布时间】:2011-11-17 13:54:13
【问题描述】:
在 MySQL Workbench 中,您可以将 COMMENTs 添加到 MySQL 数据库中的表和列中。
Sqlite 是否支持向表和列添加 cmets?
【问题讨论】:
在 MySQL Workbench 中,您可以将 COMMENTs 添加到 MySQL 数据库中的表和列中。
Sqlite 是否支持向表和列添加 cmets?
【问题讨论】:
我认为不会。 "SQL As Understood By SQLite" 页面未提及表或列 cmets,CREATE TABLE 或 ALTER TABLE 文档也未提及。
另外,Unsupported SQL wiki 页面有这个:
2009-08-04:表格和列 cmets - 我搜索了 doco,但找不到任何关于将 cmets 应用于表格或其列的信息。
是的,这是 2009 年的 wiki 页面,但其余文档支持该注释。
但是,SQLite 确实保留了您放入 DDL 中的 SQL cmets。如果您将此提供给sqlite3 CLI 工具:
CREATE TABLE User
-- A table comment
(
uid INTEGER, -- A field comment
flags INTEGER -- Another field comment
);
然后你会从 .schema 命令得到准确的返回:
sqlite> .schema
CREATE TABLE User
-- A table comment
(
uid INTEGER, -- A field comment
flags INTEGER -- Another field comment
);
因此,如果您可以控制用于创建表的 DDL,您应该能够伪造它。
【讨论】:
.schema,您还可以获得与使用SQL 语句相同的结果:SELECT name, sql FROM sqlite_master WHERE type='table' AND name='{$table}' ORDER BY name;(其中$table 是表的名称)。见:stackoverflow.com/a/6617764/180733
(这不是原发帖人要问的,但这是我第一次根据标题中的关键字找到这个问题时所要寻找的。)
在SQLite代码中制作cmets有两种方式:
连字符
-- this is my comment
SELECT * FROM employees;
C 风格
/* this is my comment */
SELECT * FROM employees;
【讨论】:
使用 sqlite 创建表时(我在 python 中使用sqlite3),不支持COMMENT 部分。
这失败了(在完整的 MySql 语法中工作):
CREATE TABLE `Info` (
`Test` VARCHAR(512) NOT NULL COMMENT 'Column info here'
);
这有效(列声明中没有COMMENT):
CREATE TABLE `Info` (
`Test` VARCHAR(512) NOT NULL
);
【讨论】:
我很欣赏这是一篇旧帖子,但值得一提的是,您可以在 SQLITE3、Python 和 Java 中创建表时添加 cmets。可能也适用于其他语言。
您需要像在 SQLITE3 提示符下键入命令一样向 sql 字符串添加新行 -
sql_str = 'CREATE TABLE properties (\nproperty TEXT NOT NULL, -- A property\nvalue TEXT -- The value of the property\n);'
当执行时,表是这样创建的:
sqlite> .schema
创建表属性(
property TEXT NOT NULL, -- 一个属性
value TEXT -- 属性的值
);
我怀疑这是可行的,因为连接器实际上是通过命令提示符而不是某种 API 在命令中回显。
【讨论】: