【问题标题】:Add column to table and set all row's values for the column to a specified value将列添加到表并将该列的所有行的值设置为指定值
【发布时间】:2012-11-11 05:08:12
【问题描述】:

我有一个需要添加一列的 SQL 数据库表。添加该列后,我需要为添加的列一次性指定所有行的值; 我知道要添加我可以使用以下内容的列:

// Adds a column to the table
"ALTER TABLE myTable ADD lastCheck INT;"

从这里我剩下的是使用 php 循环遍历 15+k 行表。有没有更好/更快的方法来做到这一点,而不必依赖 PHP 作为工作马?

一些注意事项:
1:列行值初始设置后,values可以为null,所以不能指定默认值。

【问题讨论】:

    标签: php mysql alter


    【解决方案1】:

    试试这个

    ALTER TABLE myTable ADD lastCheck INT DEFAULT 10
    

    或者您可以在之后运行更新

    UPDATE MyTable SET lastCheck = 10
    

    SQL Fiddle

    【讨论】:

    • 这只会为创建列后添加的列设置行值。
    • 是的。这就是我发表评论的原因。添加列之前的行未更新为指定的默认值。
    • 是的对不起...因为它是可空列,它不会设置值。我在想相当于 ALTER TABLE myTable ADD lastCheck INT NOT NULL DEFAULT 10
    【解决方案2】:

    你可以使用:

    $query="Update Tablename set Columnname='value'";
    

    【讨论】:

      【解决方案3】:

      这应该适合你:

      ALTER TABLE myTable ADD COLUMN lastCheck INT DEFAULT 123
      

      这将添加新列并将所有记录的列值一次设置为 123。 这不会禁止该列具有 NULL 值。 实际上,您甚至可以在执行此操作后将默认设置为 NULL:

      ALTER TABLE myTable ALTER COLUMN lastCheck DROP DEFAULT 
      

      【讨论】:

      • 如 codingbiz 的 cmets 所述。这不会更新在列之前添加的行。
      • 好吧,如果它是旧的er,你应该在问题中提到版本号。
      猜你喜欢
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 2017-03-03
      • 2015-04-02
      • 2021-12-07
      相关资源
      最近更新 更多