如何在MySQL中将一列的默认值指定为另一列的值?

6

我想在MySQL数据库的表中添加一个新列,该列应该获得同一表中另一列的值。这个是否可能?如果是,该怎么做?

4个回答

6

从MySQL 5.0.2开始,您可以编写与TRIGGER关联的存储过程,每次插入一行时都可以检查新列,并在新列没有提供值时自动将其他列的值复制到新列中。


感谢您的评论。我最初也考虑了触发器,但想要避免使用它们。由于这对我的即时需求不是非常重要,所以我会假设MySQL默认情况下不支持它。再次感谢! - Sumit Garg

3
你可以使用以下两个命令来完成你的工作。
  1. This command will be used to add new column in you table. Remember data type from where you want to copy to use those data type in new Column.

    ALTER TABLE table_name ADD new_column_name VARCHAR(60);
    

2: 这个命令用于将数据从旧列名复制到新列名。

   UPDATE table_name SET new_column_name = old_column_name;

如果您想删除之前的列,则可以使用以下命令:
   ALTER TABLE table_name DROP COLUMN old_column_name;

2

截至20101212,MySQL不支持在同一张表中默认设置2个时间戳列,这意味着您无法在同一张表上执行“created”和“updated”操作。

如果这正是您想要做的事情,那么使用存储过程的触发器是正确的选择。


1
创建一个视图,您可以选择相同的列两次并赋予不同的名称,然后应用程序可以使用该视图而不是直接使用表。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接