【问题标题】:Generate alter syntax for column为列生成更改语法
【发布时间】:2017-10-21 21:17:24
【问题描述】:

我找到了一种方法来查找两个数据库之间缺失的表,以及相交表中缺失的列。我可以获得缺失表的“create”语法,但是如何为缺失的列生成“alter”语法?
是否有类似SHOW CREATE TABLE $table 的内容?
@编辑
我明白了:

CREATE TABLE `table` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(225) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
)

SHOW CREATE TABLE $table

-> 我发现第二个数据库的“表”缺少“名称”列。如何“解析”(?)此创建以生成更改以将列“名称”添加到第二个数据库的表?

【问题讨论】:

  • 它被描述为in the manual。如果您在理解手册中描述的内容方面需要帮助,请更新您的问题。相关位是ALTER TABLE tbl_name [ADD | ALTER | CHANGE] col_name
  • 我需要生成这个变更,而不是自己编写。我对名称旁边的列一无所知,我需要生成适当的更改以包含键、字段类型等。
  • 好的,但是SHOW CREATE TABLE 不也输出列的相关信息吗?我不完全确定您面临的问题是什么。但这可能是我,误解了你的问题。也许您可以通过一个示例来扩展您的问题,说明您现在是如何生成语法的,并详细说明您在列部分中遇到的问题。
  • 好的,我得到:CREATE TABLE table (id int(11) unsigned NOT NULL AUTO_INCREMENT, name varchar(225) NOT NULL DEFAULT '', PRIMARY KEY (@987654331 @) )然后找出第二个数据库的“表”错过了“名称”。如何将其变成“alter”以添加“name”?
  • @DecentDabbler 完成

标签: php mysql create-table alter describe


【解决方案1】:

如果您想要单独的列,请使用(将用户更改为您的表名)

show columns from users

如果在两个表上都这样做,您可以检查差异。这可能包括如果定义已更改,则必须更改列。 要添加新列,请使用类似

alter table users add column email varchar(255) after name

后位允许您将新列放置在与其他表相同的位置(使其在查询工具中看起来一致)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 2012-08-11
    • 1970-01-01
    相关资源
    最近更新 更多